在我的Function.h文件中:
class Function{
public:
Function();
int help();
};
在我的Function.cpp文件中:
#include "Function.h"
int Function::help() //Error here
{
using namespace std;
cout << "Help";
return 1;
}
在我的Main.cpp
中#include <iostream>
#include "Function.h"
using namespace std;
int menu(){
Function fc;
fc.help();
return 1;
}
int main(int args, char**argv){
return menu();
}
错误是:'Function'尚未声明
谁能告诉我为什么?谢谢。
我试过这样,问题解决了,但我真的不明白为什么:
在Function.h文件中:
我用
class Function{
public:
int status;
Function():status(1){}
int help();
};
而不是旧的
class Function{
public:
Function();
int help();
};
答案 0 :(得分:7)
所有包含语句都缺少#
:
#include "Function.h"
^
其他一切看起来都不错,但是因为你使用的是#include <iostream>
,所以你需要在Function.cpp中cout
。
这是我编译和运行的Function.cpp:
#include "Function.h"
#include <iostream>
int Function::help() // No error here
{
using namespace std;
cout << "Help";
return 1;
}
Function::Function()
{
}
答案 1 :(得分:5)
我有类似的问题。确保您只有所需的头文件。我有两个头文件,包括彼此,并吐出这个错误。
答案 2 :(得分:2)
您已为Function类的构造函数创建了一个声明,但未将其包含在您的实现中(cpp文件)。
#include "Function.h"
Function::Function(){
// construction stuff here
}
int Function::help() //Error here
{
using namespace std;
cout << "Help";
return 1;
}
答案 3 :(得分:2)
在第一个Function.h文件中,您已声明构造函数但未定义它。在第二个Function.h文件(有效的文件)中,您已经定义并声明了Function构造函数。您可以在头文件或文件中定义和声明,也可以在头文件中声明并在Function.cpp文件中定义。
例如,在头文件“Function.h”中声明:
class Function
{
Function();
}
并在“Function.cpp”中定义:
Function::Function(){}
或者另一种方法是在头文件“Function.h”中声明和定义:
Class Function
{
Function(){}
}
你在头文件的第二个版本中做的另一件事是在“成员初始化列表”中初始化成员变量“status”,这是一件好事(参见Scott Meyers的Effective C ++,Item 4)。希望这会有所帮助:)