c++ - 这样做的正确方法是什么?调用指针到指针到指针中的函数?
问题描述
我有一个 3D 指针。我将它指向一个指向“字符”对象的指针。作为其类的成员,该对象具有指向另一个对象类型的指针。我们称其为“死”对象类型。该模具对象类型具有我想使用的功能。
我已经按照我认为应该的方式进行了设置,但是我遇到了错误。我想我可能明白它在告诉我什么,但不确定是否有一个简单的解决方法。如果是这样,我很乐意这样做。非常感谢一些帮助。
我尝试将其设为 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 指针,每个级别都必须指向实际分配的内存。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);
}
}
推荐阅读
- python - 如何从范围内的特定索引开始?
- google-cloud-dataflow - 如何从输入数据中选择一组字段作为Beam SQL中的重复字段数组
- python - Slack app_home_opened 事件调用两次
- iis - Coldfusion 页面执行了两次
- ruby-on-rails - Ruby on Rails ActiveStorage 图像不显示
- java - 非弹簧应用程序中的弹簧重试?
- python - pyspark 绑定问题无法生成 SPARK UI
- javascript - 如何使用 javascript 将其解析为对象或数组?
- sql - 部门有最大的工作人员
- python - 将文本文件行拆分并写入数据框列