如何編寫一個模板,該模板將作爲參數類,其構造函數具有互斥的簽名?具有各種構造函數簽名的類的模板
class A
{
A(){};
public:
int a;
A(int i) : a(i) {};
};
class B{
B(){};
public:
int a,b;
B(int i,int j) : a(i), b(j) {};
};
template <class T> class C {
public:
T* _t;
C(int i[])
{ //???
_t=new T(i[0]); //if T has T(int) signature
_t=new T(i[0],i[1]); //if T has T(int,int) signature
}
~C() {delete _t;}
};
int main()
{
int Ai[]={1,2};
C<A> _c(Ai); // template should work instantiated with A and B
C<B> _c(Ai); //
return 0;
}
的A
和B
的簽名是固定的(不能被更改爲int [例如])。上下文:我在考慮一個包裝器,它將採用(專用)容器類型作爲模板參數,例如T=vector<int>
或T=map<int,int>
,當需要調用構造函數時會出現問題。
謝謝。美麗的東西。 – 2012-04-06 20:26:06