我尝试编译时未定义对class :: function的引用

时间:2013-09-21 21:34:45

标签: c++

我有三个文件:Main.cpp,Security.h和Security.cpp。

  • 我在头文件中声明了我的类Security(包括一个函数)。

  • 我在Security.cpp中定义了该函数。

  • 我的头文件已包含在Main.cpp和Security.cpp中。

  • 在Main.cpp中,我正在创建一个对象,并尝试运行成员函数并不断收到编译错误。

Main.cpp的

#include<iostream>
#include "Security.h"
using namespace std;

int main()
{
  Security S1;
  S1.Driver();
}

Security.h

class Security
{private:

 public:
 void Driver();
};

Security.cpp

#include<iostream>
#include<fstream>
#include "Security.h"
using namespace std;

void Securtiy::Driver()
{
  cout << "Enter a number: ";
  int answer;
  cin >> answer;

  cout << answer;
}

2 个答案:

答案 0 :(得分:2)

Securtiy是Security.cpp文件中的拼写错误。

答案 1 :(得分:2)

你应该编译这两个文件,因为Security :: Driver的定义是在Security.cpp。

最简单的方法是调用单个命令:

g++ Main.cpp Security.cpp

但是,如果要单独编译文件,则必须使用-c标志将它们编译为中间('对象')格式:

g++ -c Main.cpp
g++ -c Security.cpp

这将为您提供两个目标文件。现在链接他们:

g++ Main.o Security.o