我正在尝试学习如何在 C++ 中创建类,其中使用头文件、包含类函数定义的 .cpp 文件和主 .cpp 文件。这是我所拥有的(取自示例)
在类.h中
class MyClass
{
public:
void foo();
int bar;
};
Run Code Online (Sandbox Code Playgroud)
在类.cpp中
#include "class.h"
using namespace std;
void MyClass::foo()
{
cout<< "test";
}
Run Code Online (Sandbox Code Playgroud)
在main.cpp中
#include "class.h"
using namespace std;
int main()
{
MyClass a;
a.foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译 main.cpp 会导致以下错误: [链接器错误] C:\:(.text+0x16): undefined reference to `MyClass::foo()'collect2: ld returned 1 exit status
我需要编译class.cpp或class.h吗?我是否缺少将 class.h 与 class.cpp 链接的方法?如果是这样我该如何链接它们?
您需要将实现文件编译成目标文件并将它们链接在一起。以下是您使用时的示例g++:
g++ -c class.cpp -o class.o
g++ -c main.cpp -o main.o
g++ class.o main.o -o main
./main
Run Code Online (Sandbox Code Playgroud)
实际上,您可以添加更多选项,例如-std=c++11 -O3 -Wall -Wextra -Werror等。
您可能只编译 main.cpp 而不是 class.cpp。
您使用什么命令来生成输出?
这应该可以正常工作:
g++ class.cpp main.cpp -o class
Run Code Online (Sandbox Code Playgroud)