假设我有一个类容器:
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 数组这样的类允许这样做。
怎么做?