1
我用下面的構造函數兩個模板參數的模板類:模板類的明確initializtion
template <class T, class TCompare>
class MyClass {
...
public:
MyClass(TCompare compare);
...
};
我有這對於整數比較重載運算符()的結構:
struct IntegerLess {
bool operator() {const int& a, const int& b) {
if (a < b)
return true;
return false;
}
};
我想將這個結構作爲參數傳遞給MyClass構造函數。我曾嘗試以下:
MyClass<int> myClassObject(IntegerLess());
和
MyClass<int, typename IntegerLess> myClassObject(IntegerLess());
不過,兩次我有一個編譯時錯誤。在第一種情況下
error: wrong number of template arguments (1, should be 2)
,並在第二種情況下
error: template argument 2 is invalid
有人能說出什麼是正確的選擇嗎?謝謝!
不能推斷*類*模板參數。 –
在第二種情況下,您不需要'typename'。這隻適用於*依賴類型*(即*模板內存在的類型)。 – BoBTFish