Так что у меня возникают проблемы с перегрузкой оператора присваивания при работе с шаблонами. По сути, я использую пользовательский класс массива с изменяемым размером, который наследуется другим классом массива, который не может быть изменен. В любом случае, у меня есть два оператора равенства, один для работы с массивами одинакового размера, а другой для работы с массивами разных размеров, при условии, что тип одинаков.
Вот код для операторов:
// operator =
//
template <typename T, size_t N>
const Fixed_Array <T, N> & Fixed_Array <T, N>::operator = (const Fixed_Array <T, N> & rhs)
{
for(size_t x = 0; x < N; x++)
{
this->set(x, rhs[x]);
}
return *this;
}
//
// operator =
//
template <typename T, size_t N>
template <size_t M>
const Fixed_Array <T, N> & Fixed_Array <T, N>::operator = (const Fixed_Array <T, M> & rhs)
{
this->resize(M);
for(size_t x = 0; x < M; x++)
{
this->set(x, rhs[x]);
}
return *this;
}
А вот что я использую для создания и назначения:
Fixed_Array<char, 10> * fa1 = new Fixed_Array<char, 10>();
Fixed_Array<char, 20> * fa2 = new Fixed_Array<char, 20>();
fa1 = fa1; //works
fa1 = fa2; //causes compiler to freak out
Сообщение об ошибке в основном говорит о том, что я не могу сделать это с 10 и 20; это не мой второй оператор присваивания с шаблоном.
Есть предложения?