在单独的目标文件中声明的类的C ++问题

时间:2017-06-14 17:07:27

标签: c++ class object-files

我在单独的目标文件中声明一个类然后在另一个文件的main函数中使用它时遇到了问题:

main.cpp中:

#include <helloclass.hpp>


using namespace std;

int main() {
    Hello hi;
    hi.hello();

    return 0;
}

helloclass.cpp:

#include <iostream>

using namespace std;

class Hello {
    public:

    void hello() {
        cout << "Hello world\n";
    }

    Hello() {}
};

helloclass.hpp:

class Hello {
    public:

    void hello();


    Hello();
};

然后我运行了以下命令:

g++ -I. -c main.cpp
g++ -c helloclass.cpp
g++ -o main main.o helloclass.o

但是,最后一个命令提供以下输出:

main.o: In function `main':
main.cpp:(.text+0x1f): undefined reference to `Hello::Hello()'
main.cpp:(.text+0x2b): undefined reference to `Hello::hello()'
collect2: error: ld returned 1 exit status

对我而言,似乎我错过了一些非常明显的东西。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您不应在单独的源文件中重新定义。而是包含头文件并实现Hello::hello函数(和Hello::Hello构造函数)。