c ++类包含未定义的引用

amo*_*eba 0 c++ header class object include

我在更大的程序中构建类的实例时遇到问题.

在我的主要功能:

//main.cpp
#include "MyClass.h"

MyClass aMyClass;
//do stuff with MyClass
Run Code Online (Sandbox Code Playgroud)

MyClass'标题在这一点上只是一个构造函数,看起来像这样:

//MyClass.h

class MyClass {
    public:
        MyClass();
};
Run Code Online (Sandbox Code Playgroud)

然后,MyClass的源代码如下所示,此时只是一个构造函数:

//MyClass.cpp
#include "MyClass.h"

//--CONSTRUCTOR--//
MyClass::MyClass(){
    cout << "constructing MyClass object..." << endl;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行我的程序时,我收到此错误:

undefined reference to `MyClass::MyClass()'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

编辑: 我正在使用命令行使用以下命令编译程序:

g++ main.cpp -o mainProgram
Run Code Online (Sandbox Code Playgroud)

编辑(已解决): 编译需要包含MyClass.cpp,正确的命令是:

g++ man.cpp MyClass.cpp -o mainProgram
Run Code Online (Sandbox Code Playgroud)

虽然我确定它很小,我在哪里滑倒?我已尝试在程序的早期声明对象,但这并没有解决问题,我得到了同样的错误.

有没有人在这看到问题?

egu*_*gur 7

你还需要编译MyClass.cpp - 这就是实现的地方.

g++ main.cpp MyClass.cpp -o mainProgram
Run Code Online (Sandbox Code Playgroud)