免费功能的C ++源代码组织

Car*_*ner 4 c++

我想开始偏爱免费(非成员)功能而不是成员函数-在本文http://www.drdobbs.com/184401197之后

我习惯于以这种方式来组织我的C ++类,这ClassName.h对于声明和ClassName.C实现都是必需的。

ClassName.h :

struct ClassName { 
    ClassName();
    void setData( unsigned data );
};
Run Code Online (Sandbox Code Playgroud)

然后实现

ClassName.C :

#include "ClassName.h"

ClassName::ClassName() { dosomething(); };
void setData( unsigned data ) { dootherthings(); }; 
Run Code Online (Sandbox Code Playgroud)

那么,当我想要一个自由功能时,如何组织代码adjustClassData()?我也想将此函数放入命名空间。

假设ClassName在中namespace foo,那么我也将free函数放入其中namespace foo

namespace foo {
    void adjustClassData( ClassName & inObj );
}
Run Code Online (Sandbox Code Playgroud)

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

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

Ano*_*ail 5

您可以将处理特定类的空闲函数放在类头和实现文件中(如果没有太多)。

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