自由函数的 c++ 源代码组织

标签 c++

我想开始更喜欢免费(非成员)函数而不是成员函数 - 关注这篇文章 http://www.drdobbs.com/184401197

我习惯于以这种方式组织我的 C++ 类,我有 ClassName.h 用于声明,ClassName.C 用于实现。

ClassName.h :

struct ClassName { 
    ClassName();
    void setData( unsigned data );
};

然后是实现

ClassName.C :

#include "ClassName.h"

ClassName::ClassName() { dosomething(); };
void setData( unsigned data ) { dootherthings(); }; 

那么当我想要一个自由函数 adjustClassData() 时,我该如何组织我的代码呢? 我也想把这个函数放到命名空间中。

假设 ClassNamenamespace foo 中,那么我会将 free 函数也放入 namespace foo 中:

namespace foo {
    void adjustClassData( ClassName & inObj );
}

我正在寻找 namespace 的方面和文件名的建议。

我正在寻找一些最佳实践 - 因为在规定文件组织的标准中没有 C++ 规则。

最佳答案

如果没有太多,你可以把处理特定类的自由函数放在类头和实现文件中。

否则,想出一个命名约定并将它们放在单独的头文件和实现文件中(例如 ClassNameFunctions.h/.cpp)。

关于自由函数的 c++ 源代码组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10903486/

相关文章:

c++ - OpenGL 矩阵相机控件,局部旋转功能不正常

C++ 2a - 多态范围

c++ - constexpr 默认的默认构造函数

c++ - 切换到 freeglut 后未呈现的行

c++ - CTreeCtrl状态图片限制为15张图片

Java - 我有一个库(.a/.so)和 header (.h),如何使用Java调用它们的函数?

C++ 停止预处理器宏扩展

c++ - 使用模板模板参数合并可变参数模板中的类型

c++ - Visual Studio : MSB3073 error exited with code 1

java - 将 C++ OpenGL 帧缓冲区代码移植到 LWJGL - 我使用什么类?