在C ++中的另一个类中使用未声明类的对象时出错

时间:2016-11-03 03:47:20

标签: c++ class object

我正在尝试编写一个包含两个类的C ++程序。

class duck {
    Fly fls;
    /*...*/
};

class Fly
{
    /*...*/
};

在上面的代码中,我试图在类duck中使用类Fly的对象 因为类Fly是在类鸭子之后声明的,所以它显示错误:

  

Fly没有命名类型

但是如果在课程Fly之前宣布课程duck 错误没有到来。如何在Fly中使用类duck的对象时 之后宣布?谢谢!

2 个答案:

答案 0 :(得分:0)

根本不可能。当您使用该类型时,它必须已经存在。

唯一的例外是当你只想使用指向该类型的指针时,在这种情况下它足以宣告它的存在:

class Fly;

class Duck {
    Fly *fls;
    ...
};
...
class Fly {
    ...
};

答案 1 :(得分:0)

  

如何声明在鸭子中使用Fly类的对象   事后?

你不能。没门。在您声明它之前,编译器对该类一无所知,因此无法使用它编译任何代码。但是有好消息!您可以在类定义之前使用类的引用和指针。你只需要像这样向前声明:

class Fly;

void foo(Fly &f_ref, const Fly& f_cref) {
    /* Using reference and const reference here */
}

class duck {
    Fly* fls_ptr; // Pointer.
    /*...*/
};

class Fly
{
    /*...*/
};

Here可以很好地概述您可以使用前向声明的位置。