【问题标题】:Get type from xml QT 4.8 C++从 xml QT 4.8 C++ 获取类型
【发布时间】:2013-02-24 12:37:00
【问题描述】:

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

C++:

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

XML:

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

所以当我加载保存文件时,我想分配一个Data&lt;int&gt;...

【问题讨论】:

    标签: c++ xml qt load xmlreader


    【解决方案1】:

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

    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" );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多