我收到 "undefined reference" 个错误,我不明白为什么 (C++ OO)

I'm getting "undefined reference" errors and I don't understand why (C++ OO)

我查看了其他多篇关于未定义引用错误的帖子,但我在我的代码中看不到任何错误。有什么我没听清楚的吗?我在 ubuntu 命令行中使用 g++ 进行编译。

这是我的代码和来自终端的错误:

Main.cpp:

#include <iostream>
#include "Object.h"

using namespace std;


int main(){
    Object* o = new Object(3,6,9);
    o->printVolume();
    delete o;
    return 0;
}

Object.h:

#ifndef OBJECT_H_
#define OBJECT_H_

class Object
{
public:
    Object(double xSize, double ySize, double zSize);   
    ~Object();
    void printVolume();
private:
    double x,y,z;
};

#endif

Object.cpp:

#include <iostream>
#include "Object.h"


using namespace std;

Object::Object(double xSize, double ySize, double zSize){
    x = xSize;
    y = ySize;
    z = zSize;
}

Object::~Object(){
    cout << "Object destroyed." << endl;
}

void Object::printVolume(){
    cout << x * y * z << endl;
}

错误:

/tmp/ccUeuPTn.o: 在函数 main': Main.cpp:(.text+0x47): undefined reference toObject::Object(double, double, double)' Main.cpp:(.text+0x57): 对 Object::printVolume()' Main.cpp:(.text+0x68): undefined reference toObject::~Object()' 的未定义引用 collect2:错误:ld 返回了 1 个退出状态

有什么我想念的吗?

编译似乎已经成功,这些错误似乎是由链接器(或某种其他类型的 post 编译步骤)产生的,它们告诉您 Object::Object(double xSize, double ySize, double zSize) 构造函数是无处可寻。

仅通过包含 Main.cpp 中的 Object.h 来让编译器了解您的对象是不够的;这将导致编译成功,但这只是故事的一半。

故事的另一半是链接也必须成功,因此您必须以某种方式使 Object.o 在链接期间对 Main.o 可用。