我是这个网站(和 c++)的新手,所以如果这是一个基本问题,请原谅我 - 到目前为止,我已经用谷歌搜索并浏览了这个网站但没有成功,所以任何人都可以提供的任何帮助将不胜感激。
我想为应用程序添加一些功能,允许用户完全定义对象的结构和内容。例如,用户将看到一个配置屏幕,允许他们列出对象的每个属性 - 鉴于我有限的知识,我认为这可以通过使用类来实现:
Class Name: CustomClassName
Class Property 1: property1Name property1DataType property1DefaultValue
...
Class Property n: propertynName propertynDataType propertynDefaultValue
然后,用户将能够点击一个按钮来保存他们的自定义配置,然后程序可以将该配置引用为类:
class CustomClassName
{
property1DataType property1Name = property1DefaultValue;
...
propertynDataType propertynName = propertynDefaultValue;
}
我什至不确定使用类是否可以做到这一点,所以如果有另一种机制可以促进这一点,我愿意接受建议!
你不能在运行时创建类,但由于动态类型本质上是静态类型的一个子集,你可以伪造它。
从键入1 Property
开始:
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
的内部结构应根据您的特定目的量身定制。如果你需要一个开放的变体,而你事先不知道所有可能的类型,这会变得更加复杂,需要类似的东西 any
.