我是网站的新手(以及c ++)所以如果这是一个基本的问题,请原谅我 - 我用谷歌搜索并浏览了这个网站迄今没有成功,所以任何人都能提供的任何帮助都将非常感激
我想为应用添加一些功能,允许用户完全定义对象的结构和内容。例如,将向用户显示一个配置屏幕,允许他们列出对象的每个属性 - 鉴于我有限的知识,我认为这可以通过使用类来实现:
Class Name: CustomClassName
Class Property 1: property1Name property1DataType property1DefaultValue
...
Class Property n: propertynName propertynDataType propertynDefaultValue
然后用户可以点击一个按钮来保存他们的自定义配置,然后程序可以将该配置作为类引用:
class CustomClassName
{
property1DataType property1Name = property1DefaultValue;
...
propertynDataType propertynName = propertynDefaultValue;
}
我甚至不确定使用Classes是否可行,所以如果有另一种机制可以促进这一点,我会接受建议!
答案 0 :(得分:1)
你不能在运行时创建类,但由于动态类型本质上是静态类型的一个子集,你可以伪造它。
从Property
类型 1 :
using Property = variant<int, float, string>;
一个简单的“动态”类可能如下所示:
class DynamicClass {
std::map<std::string, Property> properties;
public:
Property const& operator[](std::string const&) const
Property operator[](std::string const&);
};
使用:
DynamicClass d;
d["myInt"] = 5;
1 示例实现。 variant
的内部结构应根据您的具体目的进行定制。如果你需要一个 open 变体,你事先并不知道所有可能的类型,这会变得更加复杂,需要any
之类的东西。