这样做的正确方法是什么?调用指向指向指针的指针内部的函数?
What is the Proper Way to do this? Calling a Function that's Inside a Pointer-to-a-Pointer-to-a-Pointer?
我有一个 3D 指针。我将它指向一个指向 "character" 对象的指针。作为其 class 的成员,该对象具有指向另一个对象类型的指针。我们称其为 "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: error: request for member ‘ptrAttackDieOne’ in ‘* >charPtr’, which is of non-class type ‘character**’
charPtr->ptrAttackDieOne->roll();
^
main.cpp:27:39: error: request for member ‘ptrAttackDieOne’ in ‘* >charPtr’, which is of non-class type ‘character**’
cout << "The roll is" << charPtr->ptrAttackDieOne->getRoll() << >endl;
要取消引用一个三指针,您需要先取消引用它两次:
(**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);
}
}
我有一个 3D 指针。我将它指向一个指向 "character" 对象的指针。作为其 class 的成员,该对象具有指向另一个对象类型的指针。我们称其为 "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: error: request for member ‘ptrAttackDieOne’ in ‘* >charPtr’, which is of non-class type ‘character**’ charPtr->ptrAttackDieOne->roll(); ^
main.cpp:27:39: error: request for member ‘ptrAttackDieOne’ in ‘* >charPtr’, which is of non-class type ‘character**’ cout << "The roll is" << charPtr->ptrAttackDieOne->getRoll() << >endl;
要取消引用一个三指针,您需要先取消引用它两次:
(**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);
}
}