基于c ++中的用户输入动态创建类的结构和变量

时间:2015-03-11 12:37:08

标签: c++ class user-input

我是网站的新手(以及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是否可行,所以如果有另一种机制可以促进这一点,我会接受建议!

1 个答案:

答案 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之类的东西。