我對C++非常陌生,並且遇到了將指針向量傳遞給對象的問題。具體來說問題是對象是類中的方法是在子類中,我得到一個錯誤:如何在超類方法的參數中使用子類?
'Player' was not declared in this scope
Player
是Visual
,在我的文件Visual.cpp一個子類,我有以下功能,也在我的頭文件中聲明。
bool Visual::DrawStatusInformation(Timer* timer, std::vector<Player*>* playerList) {
// Draw Info
}
我曾嘗試着宣佈我的頭文件class Player;
,但我得到的錯誤:
error: invalid use of incomplete type ‘struct Player’
error: forward declaration of ‘struct Player’
我認爲問題是,我的定義是圓形的,球員延伸視覺,但視覺必須知道球員以便能夠處理Player指針的矢量。
我的問題是:
如果可能的話,我怎麼能在一個超類方法的參數使用一個子類?
問題是:爲什麼基類應該知道它的任何派生類?理想情況下,它不應該。這是你設計中的問題。 –
它不知道'Player'是什麼,所以它給你一個編譯錯誤。 – 2012-06-19 12:29:16
你可以在通過它們之前將你的後代類別轉換爲它們的父類型,但基本上Als在他們說你的架構是錯誤和顛倒的時候是正確的。 – Rook