簡體   English   中英

錯誤C2228:'.draw'的左邊必須有class / struct / union

[英]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左邊的.drawdrawable.at(i) ,而且該表達式的類型不是類,結構或聯合 - 它是指向類的指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM