从模板继承:正确的构造函数

时间:2017-04-19 16:26:38

标签: c++ templates inheritance

从子类构造函数中继承模板时,必须在调用父构造函数时指定模板参数。 代码示例:

    template<typename TYPE>
class Association
{
public:
    Association(TYPE* object) : m_object(object) {}
private:
    TYPE* m_object;
};

class MyClass
{
};

class AssociationToMyClass : public Association<MyClass>
{
    // is the constructor correct
    AssociationToMyClass(MyClass* object) : Association<MyClass>(object) {}
    // or this one?
    AssociationToMyClass(MyClass* object) : Association(object) {}
};

1 个答案:

答案 0 :(得分:2)

两者都是正确的。 Association<MyClass>更明确,但有一个“注入的类名称”可用于名称查找,其中Association表示与Association<MyClass>相同。