繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM