需要使用不同名称空间下的函数,名称空间反映不同的数据版本,但所有函数都具有相同的签名。请参见示例
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( ... )
答案 0 :(得分:1)
这不可能。编译程序时,将丢弃命名空间名称。
您也不能拥有类型名称空间的变量。如果每个版本都是类或类的实例,则可以创建一个返回相应实例的函数 - 但这不是命名空间的情况。