前两天因为修改自己文章《个人对QT中的namespace Ui的理解》遇到前置声明的概念,很陌生就好奇的自己码了点代码,谁知编译报错,改来改去却百思不得其解。代码如下:
#include <iostream>
using namespace std;
class SayHi;
int main()
{
SayHi * stu = new SayHi;
cout<<"Hello!"<<endl;
stu -> Say();
return 0;
}
class SayHi
{
public:
SayHi() {};
void Say()
{
cout << "Hi" << endl;
}
};
编译报错为:
1> main.cpp
1>d:\vs2015\demo2\demo2\main.cpp(6): error C2512: “SayHi”: 没有合适的默认构造函数可用
1>d:\vs2015\demo2\demo2\main.cpp(8): error C2027: 使用了未定义类型“SayHi”
1> d:\vs2015\demo2\demo2\main.cpp(3): note: 参见“SayHi”的声明
1>d:\vs2015\demo2\demo2\main.cpp(8): error C2227: “->Say”的左边必须指向类/结构/联合/泛型类型
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========