在程序逻辑/条件命名空间中使用命名空间
C++: Use of namespaces in program logic / conditional namespaces?
这是一个技术问题,也是一个风格问题(如果技术上可行的话)。在我的代码中,我有一系列加载和操作文件的函数。对于不同的语法,这些函数存在于单独的名称空间中,因此:
namespace typeA {
void load();
void manipulate();
};
namespace typeB {
void load();
void manipulate();
};
在这个最小的示例中,显然我可以简单地使用一个子句来检查文件类型,然后根据需要调用typeA:load()和typeB:load()等。
然而,我想知道是否也可以使用名称空间别名来做到这一点?这将使代码更清晰,因为在命名空间中有几十个函数调用,所有调用都需要单独的if/else子句。
我试过了:
namespace my_type = (ft == "type_A") ? typeA : typeB;
...
my_type::load();
编译时不会在命名空间别名分配行出现错误。
是否有其他的方法来做这件事/什么是普遍接受的干净的方式来处理这种情况?
我认为每个文件类型的虚拟类和继承将是一种选择。还有其他的吗?
没有办法做这样的命名空间别名。
3.4.6使用指令和命名空间别名[basic.lookup.udir]在using指令或名称空间别名定义中,查找名称空间名称或中的名称时嵌套名称说明符只考虑名称空间名称。
你可以使用部分模板专门化来解决这个问题。
相关文章:
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- CUDA内核和数学函数的显式命名空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 在命名空间中使用全局命名空间中的函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- '使用命名空间{嵌套在另一个命名空间中的某个命名空间}"
- 是否可以将函数导入命名空间,但不能导出它?
- C++ C++类中的命名空间降级
- 如何使用 soong 命名空间来有条件地编译模块
- 使用 Clang++ 有没有办法将文件作为命名空间等包含?
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- c++ 条件包含指令中是否允许命名空间
- 在程序逻辑/条件命名空间中使用命名空间