クラスコンテナがあるとしましょう:
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;
}
};
問題は、サイズの異なる 2 つのコンテナーがある場合、= 演算子を使用して一方を他方に割り当てることができないことです。例:
container<int,4> c1;
container<int,5> c2;
c1=c2; // syntax error: 4!=5
C++11 配列などのクラスでは、これを行うことができます。
どうやってするか?