-2

我对下面的 C++ 类结构感到困惑:

A.h:
  class A{
};

A.cpp
//implementation for A
  void A::someMethod();

B.cpp:
#include "A.h"

B : public A{

//stuff for B
};
int main{
   B b();
   b.someMethod();
}

g++ A.cpp Ah --> 编译正常

g++ B.cpp --> 对 main 的未定义引用

4

1 回答 1

2

你需要做:

g++ A.cpp -c
g++ B.cpp -c

生成 Ao 和 Bo(没有-cg++ 期望链接并生成一个完整的可执行文件 - 并期望一个main函数,而 -c 指定编译和汇编但不链接)。

然后,您可以使用以下方法将两个目标文件链接到可执行文件中:

g++ A.o B.o

另外:不要在命令行上指定头文件。您需要#include在 cpp 文件中使用指令指定它们,然后编译器会将它们的内容直接拉入,作为编译每个 cpp 的预处理阶段。如果您对 C++ 编译阶段的详细信息感兴趣,Microsoft 在此处详细介绍了他们的编译器。

于 2012-06-25T15:41:15.097 回答