错误 C2228:'.draw'左侧必须具有类/结构/联合

error C2228: left of '.draw' must have class/struct/union

本文关键字:联合 结构 C2228 draw 错误      更新时间:2023-10-16

好的,我认为问题是我还没有初始化向量但是我不知道……无论如何,我得到一个错误,说这是错误的:

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),并且该表达式的类型不是类,结构体或联合-它是指向类的指针。