在多个文件中实现类

Class implementation in multiple files

本文关键字:实现 文件      更新时间:2023-10-16

我试图在不同的cpp文件中实现一个类。我理解这是一个合法的事情,在c++中做,如果成员函数是独立的。然而,其中一个成员函数使用了另一个成员函数,例如在本例中:

在function1.cpp

#include "myclass.h"
void myclass::function1()
{ 
    function2();
}
在function2.cpp

#include "myclass.h"
void myclass::function2()
{
....
}

我将得到对function2的未定义引用的错误。加上这个指针也不行。我需要在function1.cpp中以某种方式声明它吗?谢谢~

头文件包括两个函数的声明。当函数1和函数2在同一个文件中,但当我分开它们时,它不起作用。我也相信我已经在项目中添加了两个cpp。我正在使用Qt creator .

只要myclass.h包含类的定义和成员函数的声明,就应该没问题。例子:

//MyClass.h
#ifndef XXXXXXXX
#define XXXXXXXX
class MyClass
{
  public:
   void f1();
   void f2();
};
#endif
//MyClass1.cpp
#include "MyClass.h"
void MyClass::f1()
{
};
//MyClass2.cpp
#include "MyClass.h"
void MyClass::f2()
{
     f1(); //OK
}

应该可以。如果出现链接器错误,请确保编译了两个cpp文件,这是最有可能导致错误的原因。

我觉得一切都很好。您的构建过程可能有问题。您应该将这两个.cpp文件(使用-c选项)编译为目标文件,并在下一阶段将它们链接在一起。