从字符串生成命名空间

Generate namespace from string

本文关键字:命名空间 字符串      更新时间:2023-10-16

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

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( ... )

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

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

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( ... )

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

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