对实现文件中定义的构造函数的未定义引用
Undefined reference to constructor defined in implementation file
我正在尝试在 Ubuntu 18.04 上使用 Atom 编辑器用 C++ 编写程序。我对使用 Linux 非常陌生,我以前的所有编码经验都是在已经设置好供我使用的计算机和 IDE 上使用的,因此希望这是一个简单的修复。据我所知,我已经正确安装了 GCC。在终端 returns
中执行 which gcc g++
/usr/bin/gcc
/usr/bin/g++
并且我在 Atom 中使用 gpp-compiler 包来编译和 运行 我在 Atom 中的程序。
我的程序目前包含头文件"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 文件尚未编译,或者生成的目标文件未链接。
在第一种情况下,我不确定如何只编译 Creature.cpp 文件,就好像我尝试在 Atom 中执行此操作一样,它也尝试 运行 文件并且显然失败了没有主要功能。我还尝试通过执行 g++ -c Creature.cpp
在终端中执行此操作,但仍然出现相同的错误。
在第二种情况下,我不太确定这意味着什么或如何去做。
在此先感谢您提供的任何帮助。
您可以使用以下方法构建您的程序:
g++ *.cpp -Wall -Wextra
避免写下所有的 ccp 文件名。
警告是一种奖励,总是一个好主意。
我正在尝试在 Ubuntu 18.04 上使用 Atom 编辑器用 C++ 编写程序。我对使用 Linux 非常陌生,我以前的所有编码经验都是在已经设置好供我使用的计算机和 IDE 上使用的,因此希望这是一个简单的修复。据我所知,我已经正确安装了 GCC。在终端 returns
中执行which gcc g++
/usr/bin/gcc
/usr/bin/g++
并且我在 Atom 中使用 gpp-compiler 包来编译和 运行 我在 Atom 中的程序。
我的程序目前包含头文件"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 文件尚未编译,或者生成的目标文件未链接。
在第一种情况下,我不确定如何只编译 Creature.cpp 文件,就好像我尝试在 Atom 中执行此操作一样,它也尝试 运行 文件并且显然失败了没有主要功能。我还尝试通过执行 g++ -c Creature.cpp
在终端中执行此操作,但仍然出现相同的错误。
在第二种情况下,我不太确定这意味着什么或如何去做。
在此先感谢您提供的任何帮助。
您可以使用以下方法构建您的程序:
g++ *.cpp -Wall -Wextra
避免写下所有的 ccp 文件名。
警告是一种奖励,总是一个好主意。