【发布时间】:2022-01-06 07:20:28
【问题描述】:
我是使用 c++ 编程的新手,并且在创建构造函数和对象时遇到了一些麻烦。 如何访问我的受保护成员,例如 Fahrzeug 类中的 int p_iID? 我必须分别为我的两个对象访问它们。
如果你能帮我解决这个问题,我会很高兴。
class Fahrzeug {
private:
protected:
string p_sName;
int p_iID;
double p_dMaxGeschwindigkeit;
double p_dGesamtStrecke;
double p_dGesamtZeit;
double p_dZeit;
public:
virtual void vAusgeben(Fahrzeug* pFahrzeug1,Fahrzeug* pFahrzeug2);
virtual void vKopf();
virtual void vSimulieren(Fahrzeug *pFahrzeug, Fahrzeug *pFahrzeug2);
class PKW;
class PKW: public Fahrzeug{
PKW(const int p_iMaxID, string p_sName, double p_dMaxGeschwindigkeit, double p_dGesamtStrecke) {
p_iID = p_iMaxID;
this->p_sName = p_sName;
this->p_dMaxGeschwindigkeit = (p_dMaxGeschwindigkeit < 0) ? 0 : p_dMaxGeschwindigkeit;
this->p_dGesamtStrecke = p_dGesamtStrecke;
}
void vAusgeben(PKW pkw1, PKW pkw2) {
cout << "\n";
PKW pkw1;
PKW pkw2;
pkw1.vKopf();
cout << setw(5) << left << pkw1.p_iID<< " " << setw(10) <<pkw1.p_sName << setw(8) << " " << setw(15) << showpoint << pkw1.p_dMaxGeschwindigkeit << setw(3) << " " << pkw1.p_dGesamtStrecke; //Here I have the issue with pkw1.p_sName
cout << "\n";
cout << setw(5) << left << pkw2.p_iID << " " << setw(10) << pkw2.p_sName << setw(8) << " " << setw(15) << showpoint << pkw2.p_dMaxGeschwindigkeit << setw(3) << " " << pkw2.p_dGesamtStrecke;
cout << "\n";
}
}
【问题讨论】:
-
您收到的实际错误信息是什么?另外,为什么
vAusgeven会创建两个与其参数名称完全相同的新变量,从而隐藏它们? -
另外,您可能应该为
Fahrzeug创建一个PKW可以委托给它的构造函数。 -
另外,
p_前缀在语法高亮和“转到定义”的世界中真的没用。 -
Ewww,两种匈牙利方言层层叠叠。痛……痛……
-
为了最小化repro,您只能使用一个成员变量和一个函数...