C++ 错误C2228:位于';的左侧;。绘制';必须具有类/结构/联合
好的,我想问题是我没有初始化向量 但是我不知道。。。无论如何,我得到了一个错误,说这是错误的:C++ 错误C2228:位于';的左侧;。绘制';必须具有类/结构/联合,c++,vector,polymorphism,C++,Vector,Polymorphism,好的,我想问题是我没有初始化向量 但是我不知道。。。无论如何,我得到了一个错误,说这是错误的: drawable.at(i).draw(); 在头文件中将向量声明为: vector<render*> drawable; cpp: 如何修复“.draw”左侧的问题?drawable.at(I)->draw()因为drawable.at(i)是一个渲染指针 或者使用优秀的编译器如何改善用户体验 我想问题是我没有初始化向量 不,您应该能够立即发现这不是问题所在,因为您从编译器中得到了错
drawable.at(i).draw();
在头文件中将向量声明为:
vector<render*> drawable;
cpp:
如何修复“.draw”左侧的问题?drawable.at(I)->draw()代码>因为drawable.at(i)是一个渲染指针
或者使用优秀的编译器如何改善用户体验
我想问题是我没有初始化向量
不,您应该能够立即发现这不是问题所在,因为您从编译器中得到了错误。当程序运行时,初始化失败会导致问题。您尚未运行它,因为它尚未编译,因为您将收到一条编译器错误消息
它是渲染指针的向量
是的。所以当你从向量中得到一个元素时,你有一个指针。不能对指针调用成员函数,因为指针不是对象-它指向对象
这就是错误消息所说的:“左边的“.draw”必须有class/struct/union”。这正是它所说的:在.draw
左边的东西是可绘制的。在(i)
,该表达式的类型不是类、结构或联合,而是指向类的指针。吹毛求疵,但从技术上讲,指针可以是对象,在本例中就是。更准确的说法是,不能对指针调用成员函数,因为指针类型没有成员。
ShaysWorld * sw;
sw = new ShaysWorld;
drawable.push_back(sw);
_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.