我在单独的目标文件中声明一个类然后在另一个文件的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
对我而言,似乎我错过了一些非常明显的东西。有谁知道如何解决这个问题?
答案 0 :(得分:1)
您不应在单独的源文件中重新定义类。而是包含头文件并实现Hello::hello
函数(和Hello::Hello
构造函数)。