我正在尝试在不同的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。
答案 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选项)编译到目标文件中,并在下一阶段将它们链接在一起。