错误:****尚未声明

时间:2011-03-11 05:25:11

标签: c++

在我的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();
};

4 个答案:

答案 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)。希望这会有所帮助:)