您好我在C以下的类层次结构++
Class1 {
vector<Class2> vecClass2;
}
Class2 {
private:
const Class1 * ptrClass1;
vector<Class3> vecClass3;
public:
Class2(const Class1 * ptrClass1);
int intC2publicVar;
string strC2publicVar;
}
Class3 {
private:
const Class2 * ptrClass2;
vector<Class4> vecClass4;
public:
Class3(const Class2 * ptrClass2);
}
Class4 {
private:
const Class3 * ptrClass3;
vector<Class5> vecClass5;
public:
Class4(const Class3 * ptrClass3);
void class4Method() const;
}
在class4Method()我做这样的事情这个:
void Class4::class4Method() const {
const Class2 * pC2 = ptrClass3->ptrClass2;
int valClass2 = pC2->intC2publicVar;
//Above value is giving wrong value, I have no idea from where it is fetching the wrong value
string strVatClass2 = pC2->strC2publicVar;
//Above line of code cause run time termination of code and programs stops as soon as this line executes.
const Class2 c2 = * pC2;
//Above line of code cause run time termination of code and programs stops as soon as this line executes.
}
我不知道为什么这class4Method)CLASS4的正在发生的事情(。请帮我解决这个问题。我的整个项目都因这个问题而受到打击,如果不解决它,我就无法继续前进。
你初始化了数据成员指针吗? – juanchopanza
你的方法的第一行:'const Class2 * pC2 = ptrClass3-> ptrClass2;'你访问'Class3'的私有成员。这不应该编译。之后的任何事情都从运行时的角度来看。 – Fiktik
同意,我不认为你发布了你正在“运行”的代码:p另外,除非你在类之间使用继承,否则你应该避免谈论heirarchies(你有没有机会忘记把继承关系放在这个?)。 –