2017-04-19 87 views
0

從子類構造函數中的模板繼承時,需要在父構造函數的調用中指定模板參數。 代碼示例:從模板繼承:正確的構造函數

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) {} 
}; 
+0

在當前示例中,兩者都是正確的。第一個是多重繼承('Association')的情況下需要的。 – Jarod42

回答

2

兩者都是正確的。 Association<MyClass>更加明確,但在名稱查找中可以看到「注入類名」,其中Association的含義與Association<MyClass>相同。