2014-09-24 4 views
-4

Что происходит? Вот функции, которые он ссылается. Я пытаюсь получить эту работу как конструктор копированияНеверная инициализация ссылочного типа?

template <class T> 
const queue<Base>& queue<T>::operator=(const queue<Base> &q){ 
// Doesn't need to copy if they are the same object 
if (this != &q){ 
    delete [] data; 

    length = q.length; 
    capacity = q.capacity; 
    front = q.front; 

    data = new T[capacity]; 

    for (int i = 0; i < capacity; i++){ 
     data[i] = q.data[i]; 
    } 
} 

return this; 
} 
+0

Когда вы как вопрос о сообщении об ошибке, обычно указывается, какая строка вызвала ошибку. Как мы должны знать, какая строка - строка 23 (или 190)? – AnT

+0

Зачем вам нужен оператор присваивания? Используйте вектор вместо необработанного массива, и по умолчанию он будет работать автоматически. –

+0

Обратите внимание, что 'operator =' должен возвращать ссылку * не const *. – cdhowie

ответ

2

Это ваша ошибка

return this; 

this является указателем. Ваш operator = объявлен как возвращающий ссылку. Указатель не может быть преобразован в ссылку. Об этом вам сообщает сообщение об ошибке.

Смежные вопросы