如何将key:value属性动态添加到c++;类,然后将其作为class.property进行访问

如何将key:value属性动态添加到c++;类,然后将其作为class.property进行访问,class,dynamic,properties,key-value,Class,Dynamic,Properties,Key Value,在Python中,我发现有一个非常有用的标志类。我是NeWbe到C++,在C++中似乎无法复制这个Python功能。而不是C++的代码不工作,这里是我要复制的,我需要一些建议,去哪里,模板,虚拟,或??p> 需求是能够动态地改变类的成员,在python中,它修改类的dict元素,这是由它自己实现的 在python中: 导入系统 args=[] 。。。使用键加载args[]:值在sys.argv[]中循环。。。废话废话 类别标志: 定义初始化(self,**参数): 自我目录更新(args) 现在

在Python中,我发现有一个非常有用的标志类。我是NeWbe到C++,在C++中似乎无法复制这个Python功能。而不是C++的代码不工作,这里是我要复制的,我需要一些建议,去哪里,模板,虚拟,或??p> 需求是能够动态地改变类的成员,在python中,它修改类的dict元素,这是由它自己实现的

在python中:

导入系统 args=[]

。。。使用键加载args[]:值在sys.argv[]中循环。。。废话废话

类别标志:

定义初始化(self,**参数):

自我目录更新(args)

现在我们启用flag.dynamicproperty

标志=标志(**dict(args))

使用示例: $python script.py somedesc1 someval1 somedesc2 someval2

这使我能够像上面一样从命令行传入参数,并动态分配任意数量的参数,然后通过返回somval1的flag.property(例如flag.somedesc1)调用进行访问。另一种方法是动态地把一个键:value属性添加到C++类。 python代码中的一个使用示例:

如果flag.somedesc1!='10':打印someval1

我似乎无法做出类似的C++工作。我已经研究过多态性,但这些必须动态分配,然后作为类的属性进行访问


想法???当然C++可以做到这一点,我只是不知道从哪里开始。

< P>不,你不能在C++中这样做。在C++中,类的成员在编译时定义为100%。您不能在运行时添加任何。在C++中这样做的方法是拥有一个成员变量,它是一个包含代码/值对的<>代码> map < /C++ >,然后有一个函数:代码> string GETFILATION(String),它返回字典中的值。< /P> < P>不,C++中不能这样做。在C++中,类的成员在编译时定义为100%。您不能在运行时添加任何。在C++中这样做的方法是拥有一个成员变量,它是一个包含代码/值对的<>代码> map < /COD>,然后有一个函数:代码>字符串GETFALUTE(String),它返回字典中的值。< /P> < P>好,这里是我解决的解决方案;还没有测试过,但是应该可以使用这种格式工作,以满足我的需要

标志。查找(文件名)

枚举{filename,worker,runtime}

班旗{

vector<string> helplist;
向量帮助列表;
公众: int add(int argc,char*argv[],字符串标志,字符串值,字符串描述){

字符串标记值;
flagvalue=值;
帮助列表。推回(说明);
对于(int i;icout好的,这是我制定的解决方案;还没有测试过它,但是应该可以使用这种格式工作到足够适合我的需要

标志。查找(文件名)

枚举{filename,worker,runtime}

班旗{

vector<string> helplist;
向量帮助列表;
公众: int add(int argc,char*argv[],字符串标志,字符串值,字符串描述){

字符串标记值;
flagvalue=值;
帮助列表。推回(说明);
对于(int i;i起初,我试图使用向量作为动态内容持有者,但我无法找到将其绑定到对象并为其指定密钥名称的方法。我将尝试使用map和getVariable(string)解决一些问题正如你所建议的。你能想出任何方法来创建一个动态枚举吗?最初我试图使用一个向量作为动态内容持有者,我只是想不出一种方法来将它绑定到对象并为其指定键的名称。我将试着用map和getVariable(string)解决一些问题正如您所建议的。您能想出任何方法来创建动态枚举吗?您通常应该在发布解决方案之前对其进行测试。您通常应该在发布解决方案之前对其进行测试。