На данный вопрос уже ответили:
есть класс с перегруженным оператором <<
template<class T>
class Array
{
private:
//...
public:
//...
friend ostream& operator<<(ostream &os, const Array<T> &obj);
};
Реализация перегрузки такая(реализация, как и положено, в хедере):
template<class T>
ostream& operator<<(ostream &os, const Array<T> &obj)
{
//..
return os;
}
В мейне пишу следующий код:
cout << "arr: " << arr << endl;
В результате выдает ошибку:
ошибка: undefined reference to `operator<<(std::ostream&, Array const&)'
В чем проблема? Перечитал уже все и русско и англо язычные форму, ни одни советы не помогают.
Объявите друга (он же у вас шаблонный) так:
template<typename U>
friend ostream& operator<<(ostream &os, const Array<U> &obj);
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Делаю задания по книге Бьярне Страуструпа "Программирование: принципы и практика с использованием C++, 2-е издание"Во главе 4, задании 16 надо...
Раньше просто компилировал с помощью g++ на Ubuntu, вытягивая компилятор с помощью пакетного менеджера:
Почему gcc компилирует этот код для стандарта GNU C++, но не компилирует для GNU C++11?
Часто вижу, что выражение, которое возвращает return, заключено в круглые скобкиНапример, в хедере set в Visual Studio 2015 во всех функциях, возвращающих...