[Error] invalid use of incomplete type 使用了未定义的类型

今天在写奥特曼打大怪兽的时候,发现一个奇怪的问题,我定义了两个基类Ultraman和Monster,一个Monster的子类Boss,然后两个基类是有相互勾结的地方,它们都或多或少的使用了对方的类型进行定义自己,然后我在第一个类实现前面进行了另一个类的声明:

[Error] invalid use of incomplete type 使用了未定义的类型_第1张图片

之后编译报错:

然后它说不能使用不完整的类类型:

我就开始犯迷糊了,明明我两个类定义的好好的,咋就说我没有定义呢。我也在前面声明了。

然后经过我和另一个大三的学长两个人两个小时的寻找,各种排查,终于意识到一个问题:

因为这两个类是相互勾结了,所以其中一个类在使用另一个类进行对象实例化的时候,另一个类也会去找这个类对象实例化,而它们都还没有定义,简单来说就是,我需要你帮我做一件事A,但是你为了做事A需要我做事B,而我做事B必须建立在你帮我做事A的前提下。

于是找到一个解决办法:

类定义和类实现分离。

类实现写在两个类定义之后。

搞定了。

你可能感兴趣的:(C++,基础,bug,开发语言,青少年编程,c++)