Re[3]: Почему нельзя предварительно объявить дружественную ф
От: rg45 СССР  
Дата: 24.09.23 19:57
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Мне нужно указать в качестве дружественной функцию, которая является членом класса, а не просто пространства имен.


Блин. Ну ты же апеллируешь к тому, что свободные функции, якобы, можно объявлять дружественными без предварительного объявления. Вот я тебе и показываю, что твои апелляции безосновательны, потому что, в общем случае, свободную функцию тоже сначала нужно объявить, прежде чем ее можно будет объявить дружественной:

http://coliru.stacked-crooked.com/a/5da8e14983baa2f4

namespace ns
{

void foo();
    
} // namespace ns

struct A
{
    friend void ns::foo(); // Ok
    friend void ns::bar(); // error: 'void ns::bar()' should have been declared inside 'ns'
};


Исключением являются только дружественные функции из того же пространства имен, что и сам класс. Нужно объяснять, почему подобное исключение невозможно сделать для дружественных функций-членов, или сам напряжешь извилину?
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 24.09.2023 20:25 rg45 . Предыдущая версия . Еще …
Отредактировано 24.09.2023 20:14 rg45 . Предыдущая версия .
Отредактировано 24.09.2023 20:13 rg45 . Предыдущая версия .
Отредактировано 24.09.2023 20:04 rg45 . Предыдущая версия .
Отредактировано 24.09.2023 20:02 rg45 . Предыдущая версия .
Отредактировано 24.09.2023 20:02 rg45 . Предыдущая версия .
Отредактировано 24.09.2023 19:58 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.