На данный вопрос уже ответили:
есть класс с перегруженным оператором <<
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);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Делаю задания по книге Бьярне Страуструпа "Программирование: принципы и практика с использованием C++, 2-е издание"Во главе 4, задании 16 надо...
Раньше просто компилировал с помощью g++ на Ubuntu, вытягивая компилятор с помощью пакетного менеджера:
Почему gcc компилирует этот код для стандарта GNU C++, но не компилирует для GNU C++11?
Часто вижу, что выражение, которое возвращает return, заключено в круглые скобкиНапример, в хедере set в Visual Studio 2015 во всех функциях, возвращающих...