gpt4 book ai didi

c++ - 如何在父类(super class)方法的参数中使用子类?

转载 作者:行者123 更新时间:2023-11-27 23:23:35 31 4
gpt4 key购买 nike

我是 C++ 的新手,我在将指针 vector 传递给对象时遇到问题。具体来说,问题是对象是方法所在类的子类。我收到一个错误:

'Player' was not declared in this scope

PlayerVisual 的子类,在我的文件 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 扩展了 Visual 但 Visual 必须了解 Player 才能处理 Player 指针 vector 。

我的问题是:

如果可能,如何在父类(super class)方法的参数中使用子类?

最佳答案

我会考虑重新设计。继承为 is-a 关系建模,这反过来意味着在您的设计中,Player is-a Visual 因此它知道如何DrawStatusInformation 其他Player。这看起来合理吗?

您可能想要提供一个接口(interface),每个可绘制元素(包括 Player)都可以实现该接口(interface),然后提供一个能够绘制任何可绘制元素的类型,尤其是潜在的 Player。这样做你会打破循环依赖,设计会更合理。

请注意,这不是实现问题,而是设计问题。如果您真的觉得这是针对您的问题的最佳设计,那么您可以将前向声明与 Luchian 已经提到的包含结合起来。

关于c++ - 如何在父类(super class)方法的参数中使用子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11100895/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com