簡體   English   中英

這樣做的正確方法是什么? 調用一個指針到指針到指針的 Function?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM