C++ C++;在单独的对象文件中声明的类出现问题

C++ C++;在单独的对象文件中声明的类出现问题,c++,class,object-files,C++,Class,Object Files,在一个单独的对象文件中声明一个类,然后在另一个文件的主函数中使用它时,我遇到了一个问题: main.cpp: #include <helloclass.hpp> using namespace std; int main() { Hello hi; hi.hello(); return 0; } 然后我运行了以下命令: g++ -I. -c main.cpp g++ -c helloclass.cpp g++ -o main main.o hello

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

main.cpp:

#include <helloclass.hpp>


using namespace std;

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

    return 0;
}
然后我运行了以下命令:

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

对我来说,我似乎错过了一些显而易见的东西。有人知道如何解决这个问题吗?

您不应该在单独的源文件中重新定义该类。而是包含头文件并实现<代码> hello:hello /c>函数(和<代码> hello:hello /c>构造函数)。

不应该尝试C++中的尝试和错误程序。你应该得到一个感谢,但我已经得到了一个。我已经在
main.cpp
的第一行中包含了头文件,并且没有在源文件中重新定义类。@asc11有问题的源文件是
helloclass.cpp
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