我有一個ABC類,我想給一個未知的類變量,它的模板,這樣的:C++:給未知的類變量模板
template <v>
class ABC
{
// do something
};
當然上面的代碼不工作(有不是參數類型v)。你有任何想法來解決這個問題嗎?我不希望將變量類型v添加到模板中。
有兩種功能,哪種類型是不同的。如何在下面的類模板中使用這兩個函數?
#include <iostream>
using namespace std;
// Types of functions max1 and min1 are different!
int max1(int a, int b){ return a>b?a:b; }
int& min1(int a, int b){ return a<b?a:b; }
template<typename _T, _T(function)(_T,_T)>
class ABC
{
public:
_T a, b;
_T get()
{
return function(a, b);
}
};
ABC <int, max1> abc; // <- If You write "ABC <int, min1> abc;", error comes! How fix this?
int main()
{
abc.a = 3;
abc.b = 8;
cout << abc.get() << '\n';
cin.get();
return 0;
}
我不明白。如果你告訴我們你想如何使用它,也許它會有所幫助。 –
也許你似乎認爲變量是在'template <...>'中聲明的,函數體放在類體中? – Synxis
如果將_T(函數)(_T,_T)更改爲_T(*)(_T,_T),它會改變什麼? – bstamour