我对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