我正在尝试编写一个包含两个类的C ++程序。
class duck {
Fly fls;
/*...*/
};
class Fly
{
/*...*/
};
在上面的代码中,我试图在类duck中使用类Fly
的对象
因为类Fly
是在类鸭子之后声明的,所以它显示错误:
Fly没有命名类型
但是如果在课程Fly
之前宣布课程duck
错误没有到来。如何在Fly
中使用类duck
的对象时
之后宣布?谢谢!
答案 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可以很好地概述您可以使用前向声明的位置。