[英]Undefined reference to constructor defined in implementation file
我正在尝试使用 Ubuntu 18.04 上的 Atom 编辑器在 C++ 中编写程序。 我对使用 Linux 非常陌生,我以前的所有经验编码都是在已经设置好供我使用的计算机和 IDE 上,所以希望这是一个简单的修复。 据我所知,我已经正确安装了 GCC。 在终端执行which gcc g++
返回
/usr/bin/gcc
/usr/bin/g++
我正在使用带有 Atom 的 gpp 编译器 package 在 Atom 中编译和运行我的程序。
我的程序目前由 header 文件“Creature.h”和构造函数和方法组成
#ifndef CREATURE_H
#define CREATURE_H
class Creature {
private:
int fHealth;
public:
Creature(int Health);
virtual ~Creature(){}
void setHealth(int Health){fHealth = Health;}
int getHealth(){return fHealth}
};
#endif
使用实现文件“Creature.cpp”中定义的构造函数:
#include "Creature.h"
Creature::Creature(int Health){
setHealth(Health);
}
然后当我在我的主程序中创建这个 class 的实例时,例如
#include "iostream"
#include "Creature.h"
using namespace std;
int main(){
Creature MyCreature(10);
cout<<MyCreature.getHealth()<<endl;
return 0;
}
并尝试编译并运行我的程序我得到了错误
/tmp/cc4H4p2l.o: In function `main':
<br/>main.cpp:(.text+0x47): undefined reference to `Creature::Creature(int)'
collect2:error: ld returned 1 exit status
根据我有限的理解和我所做的调查,在我看来,要么没有编译 Creature.cpp 文件,要么没有链接生成的 object 文件。
在第一种情况下,我不确定如何只编译 Creature.cpp 文件,就好像我尝试在 Atom 中执行此操作一样,它也尝试运行该文件并失败,因为显然没有主 function。 我还尝试通过执行g++ -c Creature.cpp
在终端中执行此操作,但仍然遇到相同的错误。
在第二种情况下,我不确定这意味着什么或如何去做。
提前感谢我能得到的任何帮助。
您可以使用以下方法构建您的程序:
g++ *.cpp -Wall -Wextra
避免写入所有 ccp 文件名。
警告是一个奖励,总是一个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.