为什么使用前置声明和指针实例化了,还报使用未定义的类型? 使用了未定义类型
更新时间:2021-11-29 02:12:54 • 作者:DOMINGO •阅读 3705
使用了未定义类型
//预声明类型
class a;
class b;
class c;
//定义类型(成员改为指针)
class a
{
class* b;
class* c;
};
class b
{
class* a;
class* c;
};
class c
{
class* a;
class* b;
};
在类型定义前不能定义该类型变量。
只能对类型作预声明,然后可以定义该类型指针。当然,在使用前需要new新实例赋给指针。
C++使用了未定义类型
这样提前声明是没用的。 编译time的时候date类的结构还不知道, 这时候你就算提前声明也只能用date类的指针, 而不能有date型变量。 否则编译器没法处理这个变量成员的位移之类的东西所以也就没法编译
所以如果你要在time里用到date, 你就得把date写到前头去。 或者你在time里参数就写 date* 。当然这样也不可以把实现写在date前头了, 否则d.month之类的表达式还是处理不了
为什么我们前置声明时,只能使用类型的指针和引用
你好:
对于前置的声明,编译器只检查参数个数与类型,不检查参数名,没有分配内存。所以,只需要类型与个数即可。
祝你顺利。
这个前置声明为什么会出错啊 ?? 我只是声明了类的指针,又没有定义对象 ,求高手解答
#include<QSpinBox> 在QT里面其实是有两种意思,包含了类所在的文件和声明这个类。
class QSpinBox 这个就是声明,但是却找不到定义,因为没有包含这个类所在的文件。