C++中的独立功能/数据
Standalone functions/data in C++
我不确定这一点,搜索一下并没有发现任何特别有用的东西。因此,假设我有一个头文件,其中包含一个包含一些类 C1 和 C2 的命名空间;
namespace my_namesp {
class C1 {
public:
blah1;
...
private:
blah2;
...
};
class C2 {
public:
junk1;
...
private:
junk2;
...
};
} //-End namespace
现在假设在实现 (CPP) 中,我定义了 C1、C2 的所有成员函数,然后假设我有一些我希望 C1 和 C2 共享的公共数据,比如枚举和字符串数组,但我不一定希望它们是任何一个类的一部分。那么执行以下操作是否合法(注意:它构建并工作正常);如果我将此实现导出为客户端应用程序的库,该怎么办?这还能行吗?这种设计是否出于我应该注意的任何原因而皱眉?也许OOP的特定功能可能更适合这种事情?
namespace my_namesp {
enum some_list_num {
list_member1,
list_member2,
...,
list_length
}
static const std::string string_list[] = {
str1,
str2,
...,
strN
}
return_type C1::some_func1(...) {
...
}
...
return_type C1::some_func1(...) {
...
}
} //-End my namespace
再次提前感谢您的任何想法/更正。
如果 C1 和 C2 共享一些应该保留在翻译单元本地的实现细节,那很好。
最好将它们放在 cpp 文件中的匿名命名空间中,这样以后就不会有链接器符号冲突的风险(即,如果库客户端贸然向命名空间添加某些内容并意外重用您的"私有"名称之一)。
cpp 文件可能如下所示:
namespace { // private implementation details
enum some_list_num {
list_member1,
list_member1,
...,
list_length
}
static const std::string string_list[] = {
str1,
str2,
...,
strN
}
}
namespace my_namesp { // define externally-visible functions etc.
return_type C1::some_func1(...) {
...
}
return_type C1::some_func1(...) {
...
}
}
相关文章:
- 如何使用 MPI 的远程内存访问 (RMA) 功能并行化数据聚合?
- 如何使用CAPL的诊断功能获取CAN传输的数据(256字节)?
- 私有成员数据不可用于公共成员功能
- 在C 中,是否有树木数据结构具有相似的功能
- 当使用嵌套类功能时,使用非静态数据成员的使用无效,但是当函数未固定时可以
- 为什么指定数据类型而不是构造功能参数?C
- C 尝试使用模板输出功能来显示不同类型的数据
- 访问嵌套结构的数据成员并将结构传递到功能C
- 离开功能后丢失一些数据
- 编译器生成的移动成员在静态数据成员上功能
- 我正在尝试使用朋友功能,但我无法访问第二类的私人数据成员
- 关于Lambdas,转换以功能指针以及私人数据成员的可见性
- 固定功能如何访问类数据成员
- 正确的方法将功能限制为特定数据类型
- 如何制作具有同步数据读/写功能的多客户端服务器
- 解析一般CSV读取功能时,如何处理不同的数据类型?(不明确指定它们)
- 调用C 功能,其中包含来自C的STL数据类型
- 插入功能指向新数据
- 如何将功能和数据从一个涡轮C 程序访问到另一个涡轮增压程序
- 将const数据传递到无需const_cast的非const的功能