2016-12-05 102 views
0

我想製作一個簡單的模板類,它包含具有動態大小的特徵成員。我不斷收到隱式實例化的錯誤。不管怎麼說,我想說明的是類似的東西:帶特徵模板的類模板

template <class T> 
class MyTemplateClass 
{ 
public: 
    MyTemplateClass(DenseBase<Derived>& eigenObject); 
private: 
    SomeSortOfTypeHereForDynamicAllocation eigenMember; 
} 

MyTemplateClass<T>::MyTemplateClass(DenseBase<T>& eigenObject) 
{ 
    eigenMember = eigenObject; 
} 
+1

你真的是'MyTemplateClass(DenseBase &eigenObject)'而不是'MyTemplateClass(DenseBase &eigenObject)'?另外,確切的錯誤是什麼?什麼編譯器? –

回答

0

當一個模板類中聲明一個模板成員函數(或構造函數),你需要添加另一個template構造像這樣:

// ... 
public: 
    template<class Derived> 
    MyTemplateClass(DenseBase<Derived>& eigenObject); 
// ... 

當你以後要實現這一點,你需要在不同的template<>寫兩個模板列表:

template<class T>  // template(s) for actual class 
template<class Derived> // template(s) for method 
MyTemplateClass<T>::MyTemplateClass(DenseBase<Derived>& eigenObject) 
    : eigenMember(eigenObject) // Note: it is usually better to initialize members using the initializer list 
{ 
    // rest of constructor is empty 
}