问题描述
- error C2079 类的前置声明
-
如下代码,可运行:
void A();void test()
{
A();
}void A() {};
但是我把void改成class时候却运行失败:
class A;void test()
{
A a;
}class A {};
当然如果用指针的话还是可以的,然而并没什么用,因为指针声明后就没有然后了。
解决方案
class A;
void test();
class A
{
public:
int x;
A() {}
};
void test()
{
A *a = new A();
a->x = 1;
}
int main()
{
test();
}
解决方案二:
因为指针声明后就没有然后了。
什么意思?为什么没用?
A *a = new A();
a->成员
解决方案三:
如果A a;的话 error C2079: “a”使用未定义的 class“A”
如果 A * a = new A;的话 error C2512: “A”: 没有合适的默认构造函数可用
即使我添加了构造函数
class A;
void test()
{
A * a = new A;
}
class A {
public:
A() {}
};
解决方案四:
你们两个不是冤家吗 居然被我碰到了
解决方案五:
指针定义后,需要 new,之后和非指针定义的变量是一样的。
时间: 2024-10-01 17:06:13