2014-12-26 56 views
1

我試圖使用模板來通過類作爲變量類型來創建我的不同單位。這是說這是「非法使用顯式模板參數」。無法讓我的模板工作。非法使用顯式模板參數?

template <class Type> 
void Build<Type>() 
{ 
    pUnit = new Type(); 
    unitArray.push_back(pUnit); 
} 

我是否必須以某種方式指定類Type是單位?當我將「template < class Type>」更改爲「模板<單元類型>」時,它告訴我它是「非類型模板參數的非法類型」。我不知道我需要做些什麼來使其合法。

+1

你能顯示unitArray的聲明嗎? –

+1

什麼是「pUnit」?什麼是'unitArray'?錯誤指向什麼代碼行? –

+0

我想你想'template void MyClass :: Build()'。 – Jarod42

回答

0

我不能說出單元陣列是什麼,所以我假設它是一個類型向量。 我不能告訴pUnit是什麼,我假設它是Type類型。

你有名爲Build的函數,用void Build(){}取代。

除非此函數在類實現中,否則您需要聲明pUnit和unitArray作爲我上面提到的類型的參數。

template <class Type> 
void Build() 
{ 
    pUnit = new Type; 
    unitArray.push_back(pUnit); 
} 

template <class Type> 
void Build(vector<Type> unitArray, Type * pUnit) 
{ 
    pUnit = new Type; 
    unitArray.push_back(pUnit); 
} 
2

「非法使用顯式模板參數」簡直就是您的無效函數模板聲明語法。 <Type>在函數模板名稱後面做什麼?它應該只是

template <class Type> 
void Build() 
{ 
    // ... 
}