如何在单独的源文件中定义成员函数?

How to define member function in separate source file?

考虑以下两个程序。

p1.cpp

#include <iostream>
struct test
{
    void fun();
};
int main()
{
    test t;
    t.fun();
}

p2.cpp

#include <iostream>
void test::fun()
{
    std::cout<<"fun() is called\n";
}

我正在编译如下。

g++ -c -o p1.o p1.cpp
g++ -c -o p2.o p2.cpp   <--------- This gives me compiler error.

如何解决这个错误?我做错了什么?

基本上,您需要:

  1. 新建文件test.h
  2. 将您的 struct test { ... }; 移动到文件 test.h
  3. 将 `#include "test.h" 添加到您的两个源文件中。
  4. 重新编译这两个文件。

您可能需要考虑使用 makefile 来编译您的文件,并将对 test.h 的依赖添加到 p1.cpp 和 p2.cpp,以便在您修改 test.h