[英]What is the Proper Way to do this? Calling a Function that's Inside a Pointer-to-a-Pointer-to-a-Pointer?
我有一個 3D 指針。 我將它指向一個指向“字符”object 的指針。 object 作為其 class 的成員,具有指向另一個 object 類型的指針。 我們稱其為“模具” object 類型。 該模具 object 類型有一個我想使用的 function。
我已經按照我認為應該的方式進行了設置,但是我遇到了錯誤。 我想我可能明白它在告訴我什么,但不確定是否有一個簡單的解決方法。 如果是這樣,我很樂意這樣做。 非常感謝一些幫助。
我嘗試將其設為 3D 指針,但沒有得到不同的結果。
int main()
{
srand (time(0));
int setter = 1;
character ***charPtr = new barbarian**(setter);
charPtr->ptrAttackDieOne->roll();
cout << "The roll is" << charPtr->ptrAttackDieOne->getRoll() << endl;
return 0;
}
main.cpp:25:14: 錯誤:在 '* >charPtr' 中請求成員 'ptrAttackDieOne',它是非類類型 'character**' charPtr->ptrAttackDieOne->roll(); ^
main.cpp:27:39: 錯誤:在 '* >charPtr' 中請求成員 'ptrAttackDieOne',它是非類類型 'character**' cout << "The roll is" << charPtr->ptrAttackDieOne- >getRoll() << >endl;
要取消對三指針的引用,您需要先對它進行兩次引用:
(**charPtr)->ptrAttackDieOne->roll();
我還想指出,這不會編譯:
character ***charPtr = new barbarian**(setter);
它試圖創建一個barbarian**
類型的變量並為其分配一個 integer setter
,這是不允許的。 如果要創建3D 指針,每個級別都必須指向真實的、已分配的 memory。 new
不能填寫多個間接級別:
Barbarian*** barbarianFamiliesGroupedBySurname = new Barbarian**[3];
for (int i=0; i<3; i++) {
barbarianFamiliesGroupedBySurname[i] = new Barbarian*[2];
for (int j=0; j<2; j++) {
barbarianFamiliesGroupedBySurname[i][j] = new Barbarian("bob", weapon::axe);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.