错误 C2228:'.draw'左侧必须具有类/结构/联合
error C2228: left of '.draw' must have class/struct/union
好的,我认为问题是我还没有初始化向量但是我不知道……无论如何,我得到一个错误,说这是错误的:
drawable.at(i).draw();
,在头文件中声明为:
vector<render*> drawable;
是渲染指针的矢量,因为我有一大堆需要绘制的类,它们都是父类的孩子,其中有纯虚拟函数,这是错误的方式吗?
顺便说一句,为了放一个子元素,我使用了这个:标题:
ShaysWorld * sw;
cpp:
sw = new ShaysWorld;
drawable.push_back(sw);
我能做些什么来修复左边的'。画的问题吗?
drawable.at(i)->draw();
,因为drawable.at(i)是一个渲染指针
Try Out LLVM:
_484_0.cc:8:20: error: member reference type 'Renderer *' is a pointer;
maybe you meant to use '->'?
renderers.at(i).draw();
~~~~~~~~~~~~~~~^
->
1 error generated.
或者使用一个好的编译器如何改善用户体验。
我想问题是我还没有初始化向量
。您应该能够立即找出这不是问题所在,因为您从编译器获得错误。初始化失败会导致程序运行时出现问题。你还没有运行它,因为它还没有编译,因为你得到了一个编译错误信息。
是渲染指针的向量
是的,它是。当你从那个向量中得到一个元素时,你有一个指针。不能在指针上调用成员函数,因为指针不是对象——它指向对象。
这就是错误信息所说的:"left of "。Draw '必须有类/结构/联合'。这就是它所说的:在.draw
左边的东西是drawable.at(i)
,并且该表达式的类型不是类,结构体或联合-它是指向类的指针。
相关文章:
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 如何将结构/联合数组的成员传递到函数中
- error dllimport 函数的定义不允许在一个特定的联合中,而其他类、结构和联合将按预期导出
- 为什么继承的结构成员在联合中无法访问?
- 在向量 C++14(无限制联合)的结构内的联合中创建和存储字符串
- 尝试初始化结构内的联合时出错
- 嵌套在联合中的结构嵌套在 C 中的结构中
- 成员引用基类型 'char' 不是 C++ 中的结构或联合
- 结构内部结构的联合 - 混合 C 和 C++
- 联合初始化中的结构
- 成员引用基类型不是结构或联合
- 在结构中使用联合的目的是什么?
- 错误 C2228 左侧'.setDay'必须具有类/结构/联合
- 如何从平面缓冲区中反序列化联合结构的 void* 值的大小
- 联合结构 C# - 等效或等于
- 将C++联合结构转换为 VB6
- C ++:联合 -> 结构,解释?
- 编译器特定联合结构实现的标准替代方案
- 具有构造函数的类的匿名联合/结构
- 联合结构有什么作用