这是一个技术问题,也是(如果在技术上可行的话)一个风格问题。在我的代码中,我有一系列加载和操作文件的函数。对于不同的语法,这些函数存在于不同的命名空间中,因此:
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();
它不会在命名空间别名分配行中出现错误。
有没有另一种方法来做到这一点/处理这种情况的普遍接受的干净方式是什么?
我想每个文件类型的虚拟类和继承将是一种选择。还有其他人吗?