讓我們假設我有一個類容器:如何分配具有不同的模板參數
template<class T, int size>
class container
{
private:
T* data;
int length;
public:
container()
{
data=new T[size];
length=size;
}
~container()
{
if(length>0)
delete[] data;
}
container& operator= (container<T,size> c)
{
if(length>0)
delete[] data;
data=new T[c.length];
length=c.length;
for(int i=0; i<length; i++)
data[i]=c.data[i];
return *this;
}
};
的問題是,如果我有兩個不同大小的容器,我不能使用=運算符例如:
container<int,4> c1;
container<int,5> c2;
c1=c2; // syntax error: 4!=5
類似C++ 11數組允許這樣做。
如何做到這一點?
爲什麼'size'是一個模板參數?你的'container'的_size_似乎是動態的。 – 2012-07-25 17:14:46
您不只有兩個不同大小的容器,您有兩個具有不同模板參數的對象 - 它們不兼容。對於編譯器來說,就好像您試圖將一個int的容器分配給一個浮動容器。通常,容器的長度不是模板參數。 – 2012-07-25 17:15:35
記住複製構造函數。通過將大小設置爲模板參數,您也有點使用動態內存。例如,您無法讓用戶輸入大小。 – chris 2012-07-25 17:15:44