Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误C2228:位于';的左侧;。绘制';必须具有类/结构/联合_C++_Vector_Polymorphism - Fatal编程技术网

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.