gpt4 book ai didi

c++ - 从 xml QT 4.8 C++ 获取类型

转载 作者:行者123 更新时间:2023-11-28 07:45:05 24 4
gpt4 key购买 nike

我制作了这个程序,其中包含某种数据,用户可以选择哪种类型。用户保存他的工作,在 xml 保存文件中我想写他使用的变量类型,所以当我必须打开保存时,我的程序会分配正确的数据模板示例:

C++:

template <class T>
class Data{
private:
T variable;
...
};

XML:

<header>
<type>int</type>
</header>

所以当我加载保存文件时,我想要一个 Data<int>分配...

最佳答案

您需要创建工厂,以及一个将值名称(以字符串形式)“映射”到其中一个工厂的管理器。像这样:

class AbstractData {}

template <class T>
class Data : public AbstractData {
private:
T variable;
...
};

class FactoryManager
{
...
typedef std::function< AbstractData* () > Factory;

void registerFactory( const QString& name, const Factory& factory )
{
// Check to see one is not already registered before adding.
map_.insert( name, factory );
}

AbstractData* createData( const QString& name )
{
// Check factory exists first.
return map_[name]->createData();
}

private:
QHash< QString, Factory > map_;
}

...
FactoryManager manager;
manager.registerFactory( "int", [](){ return new Data< int >; } );
...
Data< int >* data = manager.createData( "int" );

关于c++ - 从 xml QT 4.8 C++ 获取类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15051791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com