在多个文件中实现类
Class implementation in multiple files
我试图在不同的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选项)编译为目标文件,并在下一阶段将它们链接在一起。
相关文章:
- 在实现文件中使用头文件的通用 lambda
- 如何使用命令提示符、记事本和 MinGW 使用主文件、头文件和实现文件编译C++程序?
- 类中的数组变量C++导致"was not declared in this scope"实现文件的一个函数中错误,但在构造函数中不会导致错误
- 在实现文件中使用模板参数声明方法
- 模板实现文件中的匿名命名空间
- 创建单独的实现文件和头文件
- 当我从头文件和实现文件调用我的函数到我的主文件时,我没有得到任何输出
- 在实现文件中,我们应该更喜欢"using namespace"指令还是将实现包装在命名空间 { } 中?
- 包含适当的标头时,实现文件中的多个定义出错
- 如何在结构中实现文件读取和创建
- 在头文件和实现文件中创建模板模板函数
- C++头/实现文件中的默认和重载构造函数?
- 如何在C++实现文件中实例化类?
- 实现文件只能识别其他类的远期声明
- C++ 将字符串值传递到实现文件时出现问题
- 创建头文件和实现文件时出现问题
- C 从实现文件中访问私有静态成员
- Pimpl习惯用法、单独的接口/实现文件和多个虚拟继承.如何
- 没有实现文件(.cpp)的派生类
- 在标题或实现文件中定义常数的优点