Вызов функции скрытого друга ⇐ C++
-
Гость
Вызов функции скрытого друга
Рассмотрим следующий код:
struct A { друг void foo(A& a) {} }; структура Б { недействительный Фу() { А а; Фу(а); // не компилируется, потому что дружественная функция "foo" скрыта } }; интервал основной() { А а; Фу(а); // ОК здесь } В функции main я могу легко вызвать дружественную функцию foo, определенную внутри класса A.
В функции B::foo тот же код не компилируется, поскольку дружественная функция foo скрыта внутри класса B своим членом функция.
Есть ли способ вызвать исходную скрытую функцию внутри B без переименования B::foo? Я пытался использовать ::foo(a); или A::foo(a);, но они тоже не компилируются.
Рассмотрим следующий код:
struct A { друг void foo(A& a) {} }; структура Б { недействительный Фу() { А а; Фу(а); // не компилируется, потому что дружественная функция "foo" скрыта } }; интервал основной() { А а; Фу(а); // ОК здесь } В функции main я могу легко вызвать дружественную функцию foo, определенную внутри класса A.
В функции B::foo тот же код не компилируется, поскольку дружественная функция foo скрыта внутри класса B своим членом функция.
Есть ли способ вызвать исходную скрытую функцию внутри B без переименования B::foo? Я пытался использовать ::foo(a); или A::foo(a);, но они тоже не компилируются.
Мобильная версия