对实现文件中定义的构造函数的未定义引用

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 文件名。

警告是一种奖励,总是一个好主意。