什么是正确的方法?调用指向指针的指针内部的函数?

我有一个3D指针。我将其指向指向“字符”对象的指针。该对象具有一个指向另一种对象类型的指针,作为其类的成员。我们称其为“ die”对象类型。该die对象类型具有我要使用的功能。

我已经按照我认为的方式进行了设置,但出现错误。我想我可能会明白它的意思,但是不确定是否有一个简单的解决方法。如果是这样,我很乐意这样做。非常感谢您的帮助。

我尝试将其设为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 ptrAttackDieone-> getRoll() endl;

sunliuser 回答:什么是正确的方法?调用指向指针的指针内部的函数?

要取消引用三指针,您需要先对其进行两次引用:

(**charPtr)->ptrAttackDieOne->roll();

我还想指出,这不会编译:

character ***charPtr = new barbarian**(setter); 

它试图使类型为barbarian**的变量,并为其分配一个整数setter,这是不允许的。如果要创建 3D指针,则每个级别都必须指向实际的已分配内存。 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);
        }
    }

本文链接:https://www.f2er.com/3140919.html

大家都在问