drawable.at(i).draw();
将向量在头文件中声明为:
vector<render*> drawable;
它是一个渲染指针的向量,因为我有一大堆需要绘制的类,它们都是父类的子类,其中包含纯虚函数,这是错误的方法吗?
顺便说一句,把孩子放进去我用过这个: 头:ShaysWorld * sw;
CPP:
sw = new ShaysWorld;
drawable.push_back(sw);
我该怎么做才能解决'.draw'问题的左边?
答案 0 :(得分:6)
drawable.at(i)->draw();
因为drawable.at(i)是渲染指针
答案 1 :(得分:1)
_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.
或者如何使用优秀的编译器改善用户体验。
答案 2 :(得分:1)
我认为问题在于我没有初始化矢量
没有。您应该能够立即发现这不是问题所在,因为您从编译器中获得了错误。在程序运行时,无法初始化事物会导致问题。你还没有运行它,因为它没有编译,因为你得到一个编译器错误信息。
它是渲染指针的向量
是的,确实如此。所以当你从那个向量中得到一个元素时,你就有了一个指针。你不能在指针上调用成员函数,因为指针不是一个对象 - 它指向对象。
这就是错误信息所说的:“左边的'.draw'必须有class / struct / union”。这意味着它所说的内容:.draw
左侧的内容是drawable.at(i)
,该表达式的类型不是类,结构或联合 - 它是指向类的指针