C ++ - должны ли дружественные функции быть определены в файле заголовка?

я хочу перегрузить оператор << в одном из моих классов. Подпись выглядит так:

friend std::ostream& operator<<(std::ostream& os, const Annuaire& obj)

Когда я пытаюсь определить его в файле .cpp, он говорит, что оператор << принимает ровно 1 аргумент, однако, когда я определяю его в .h, он компилируется / работает нормально.

Вот как я определяю это в файле .cpp:

std::ostream& Annuaire::operator<<(std::ostream& os, const Annuaire& obj){ // ... }

Имеет ли это какое-либо отношение к функциям друзей, которые необходимо определять в файлах заголовков?

12
задан Pacane 4 December 2011 в 05:11
поделиться