多个文件中的类实现

时间:2011-08-04 10:35:17

标签: c++

我正在尝试在不同的cpp文件中实现一个类。我知道如果成员函数是独立的,那么在C ++中这是合法的事情。但是,其中一个成员函数使用另一个成员函数,例如:

在function1.cpp

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

在function2.cpp

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

我将得到一个未定义的函数2引用错误。通过添加此指针也无法正常工作。我需要在function1.cpp中以某种方式声明它吗?感谢〜

头文件包含两个函数的声明。当function1和function 2在同一个文件中但在我将它们分开时不起作用。我也相信我在项目中添加了两个cpp。我正在使用Qt creater btw。

3 个答案:

答案 0 :(得分:14)

只要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
}

答案 1 :(得分:1)

这应该有效。如果您收到链接器错误,请确保编译两个cpp文件,这最有可能导致您的错误。

答案 2 :(得分:0)

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