class 在单独的目标文件中声明的 C++ 问题
C++ issue with class declared in a separate object file
我在单独的目标文件中声明 class 然后在另一个文件的主函数中使用它时遇到问题:
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
对我来说,似乎我遗漏了一些非常明显的东西。有谁知道如何解决这个问题?
您不应在单独的源文件中重新定义 class。而是包含头文件并实现 Hello::hello
函数(和 Hello::Hello
构造函数)。
我在单独的目标文件中声明 class 然后在另一个文件的主函数中使用它时遇到问题:
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
对我来说,似乎我遗漏了一些非常明显的东西。有谁知道如何解决这个问题?
您不应在单独的源文件中重新定义 class。而是包含头文件并实现 Hello::hello
函数(和 Hello::Hello
构造函数)。