Вывод объекта через функцию-член класса шаблона - PullRequest
1 голос
/ 22 марта 2011

Я пытаюсь использовать простую функцию вывода шаблона класса indexedList с объектом простого класса.Я перегрузил оператор вывода в классе как функцию друга следующим образом:

//in header file
friend ostream& operator <<(ostream&, simpleClass&);  

//in implementation file 
ostream& operator <<(ostream& out, simpleClass& c1){
out << c1.stringDataMem;            
return out;
}

Сам по себе работает нормально, но когда я пытаюсь использовать его с шаблоном класса indexedList, компилятор выдает ошибку,Вот выходная функция в шаблоне класса:

//in header file
void display() const;  

//in implementation file
void indexList<T, maxSize>::display() const{
for (int i = 0; i < size; i++)
    cout << elements[i] << endl;
}

В драйвере я просто добавляю несколько объектов simpleClass в массив "elements" в SimpleClass indexedList и пытаюсь использовать display ()функция.Это единственное сообщение об ошибке, которое я получаю:

"IndexList.cpp", line 38: Error: Formal argument 2 of type simpleClass& in call
to_operator<<(std::basic_ostream<char, std::char_traits<char>>&, simpleClass&)
requires an lvalue.

И шаблон класса, и простой класс работают хорошо сами по себе, но объединение их не дает.Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 22 марта 2011

Не знаком с 'indexList', но поскольку display () является методом const, elements [i], скорее всего, возвращает const simpleClass &, и, таким образом, вы пытаетесь удалить квалификатор const вВаш звонок оператору << (). </p>

Попробуйте, чтобы оператор << () взял постоянную ссылку. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...