[英]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);
我該怎么做才能解決'.draw'問題的左邊?
drawable.at(i)->draw();
因為drawable.at(i)是一個渲染指針
嘗試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.
或者如何使用優秀的編譯器改善用戶體驗。
我認為問題是我沒有初始化矢量
不,你應該能夠立即發現這不是問題所在,因為你從編譯器那里得到了錯誤。 在程序運行時,無法初始化事物會導致問題。 您還沒有運行它,因為它沒有編譯,因為您收到編譯器錯誤消息。
它是渲染指針的向量
是的。 所以當你從那個向量中得到一個元素時,你就有了一個指針。 您不能在指針上調用成員函數,因為指針不是對象 - 它指向對象。
這就是錯誤信息所說的:“左邊的'.draw'必須有class / struct / union”。 這意味着它所說的: .draw
左邊的.draw
是drawable.at(i)
,而且該表達式的類型不是類,結構或聯合 - 它是指向類的指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.