从子类构造函数中的模板继承时,有必要在父构造函数的调用中指定模板参数。
代码示例:
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) {}
};
最佳答案
两者都是正确的。 Association<MyClass>
更明确,但是对于名称查找有一个“注入的类名”可见,其中Association
的含义与Association<MyClass>
相同。