【发布时间】:2015-08-06 08:52:09
【问题描述】:
如果函数是在main()函数之后定义的,程序就可以工作了……
void printdata(int i);
int main()
{
printdata(20);
return 0;
}
void printdata(int i)
{
std::cout << "i = " << i << std::endl;
}
如果我们在main函数之前声明类,在main函数之后定义,为什么会报错?
#include <iostream>
class C;
int main()
{
C c(20);
c.printdata();
return 0;
}
class C
{
int i;
public:
C(int a) : i(a) {};
void printdata()
{
std::cout << "C:i = " << i << std::endl;
}
};
编译代码后的错误日志:
class_after_main.cpp: In function ‘int main()’:
class_after_main.cpp:7:6: error: variable ‘C c’ has initializer but incomplete type
C c(20);
【问题讨论】:
-
你必须让任何使用你的类的代码之前看到它的声明。