当我尝试编译时对类::函数的未定义引用

undefined reference to class::function when I try to compile

本文关键字:函数 未定义 引用 编译      更新时间:2023-10-16

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

  • 我已经在我的头文件中声明了我的类安全性(包括一个函数)。

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

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

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

主.cpp

#include<iostream>
#include "Security.h"
using namespace std;
int main()
{
  Security S1;
  S1.Driver();
}

安全.h

class Security
{private:
 public:
 void Driver();
};

安全性.cpp

#include<iostream>
#include<fstream>
#include "Security.h"
using namespace std;
void Securtiy::Driver()
{
  cout << "Enter a number: ";
  int answer;
  cin >> answer;
  cout << answer;
}

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

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

g++ Main.cpp Security.cpp

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

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

这将为您提供两个对象文件。现在链接它们:

g++ Main.o Security.o

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