Прежде всего, нет необходимости передавать столько вещей по ссылке. Принятие unsigned int по значению почти наверняка не замедлит процесс; То же самое касается ссылки на указатель.
Это может быть проблемой, но я сомневаюсь в этом; Я не понимаю, почему 0 не конвертируется в unsigned int const&
. Другая возможность состоит в том, что изображение на самом деле const
, но вы не упомянули об этом в своей пасте. Подстрочные операторы обычно идут парами; вам нужно объявить еще один как Color<P> const* operator [] ( unsigned int i ) const;
.
Обратите внимание, что img[0]
- это то, на что жаловались, так что = Color<double>(1.0, 1.0, 1.0);
, вероятно, не проблема (если только я не пропустил ошибку SFINAE). Наконец, убедитесь, что вы не специализировали Image
для double
.
РЕДАКТИРОВАТЬ: Кстати, возвращение Color<P>*&
имеет серьезный недостаток; кто-то может сделать img[0] = 0
, что, вероятно, было не так, как предполагалось использовать класс.