访问模板类型的数据成员

时间:2015-01-21 20:10:22

标签: c++ templates type-deduction

我有几个POD结构,所有人都有一个共同的数据字段uint32_t gID

struct component1
{
   uint32_t ID;
   //Other data
};

struct component2
{
   uint32_t ID;
   //Other data
};

struct component3
{
   uint32_t ID;
   //Other data
};

我会用工厂类来管理POD结构。

template <class Component>
class ComponentFactory
{
    public:
    //Activating/Deactivating components
    private:
    array<Component, 65536> m_components;
};

现在,m_components数组中的位置并不总是与组件ID相同。我怎样才能为ComponentFactory编写一个函数来返回某个索引处组件的ID? 例如,

uint32_t ComponentFactory::getIDatIndex(uint16_t index) 
{
    //Grab the ID of whatever component the factory manages.
    return m_components[index].ID;
}

此外,是否可以使ComponentFactory类型安全,以便不会ComponentFactory<int>ComponentFactory<char>

1 个答案:

答案 0 :(得分:1)

在更正模板语法后,您的工作正常。

template <class Component>
uint32_t ComponentFactory<Component>::getIDatIndex(uint16_t index) 
{
    //Grab the ID of whatever component the factory manages.
    return m_components[index].ID;
}