如下代码,可运行:
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();
}
指针定义后,需要 new,之后和非指针定义的变量是一样的。
因为指针声明后就没有然后了。
什么意思?为什么没用?
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() {}
};