您好我在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(你有沒有機會忘記把繼承關係放在這個?)。 –