从字符串生成命名空间

时间:2018-04-29 22:25:49

标签: c++ namespaces

需要使用不同名称空间下的函数,名称空间反映不同的数据版本,但所有函数都具有相同的签名。请参见示例

For version v_1_0 this function is needed   v_1_0::decoder::decoding( ... )
For version v_1_1 then this shall be called v_1_1::decoder::decoding( ... )

我从其他地方收到版本字符串。版本格式与命名空间完全一样,我想知道我是否可以从命名空间字符串变量生成函数调用。

我要求提出这个问题的原因是,已经有很多版本,很快就会添加更多版本。我必须创建一个long if else或switch循环来调用非常烦人的函数

switch (version) {
    case v_1_0:
        v_1_0::decoder::decoding( ... )
        break;
    case v_1_1:
        v_1_1::decoder::decoding( ... )
        break;
     ....
    default:
        break;
    }

这样的东西会很高兴
auto name_space = get_namespace( version );
name_space::decoding( ... )

1 个答案:

答案 0 :(得分:1)

这不可能。编译程序时,将丢弃命名空间名称。

您也不能拥有类型名称空间的变量。如果每个版本都是类或类的实例,则可以创建一个返回相应实例的函数 - 但这不是命名空间的情况。