Можно ли вызвать friend-функцию из другой, обычной функции того же класса? Если да, то как?
Вот такого эксперимента достаточно?
class Secret
{
private:
void out() const { cout << "Secret\n"; }
friend void top(const Secret& s);
};
void top(const Secret& s)
{
s.out();
};
class Public
{
public:
void secret()
{
Secret s;
// s.out(); Не скомпилируется!
top(s);
}
};
int main(int argc, const char * argv[])
{
Public p;
p.secret();
}
Или так (дружественная одна из функций чужого класса, недоступная извне вообще):
class Public
{
public:
void secret();
private:
void stop();
};
class Secret
{
private:
void out() const { cout << "Secret\n"; }
friend void Public::stop();
};
void Public::secret()
{
stop();
}
void Public::stop()
{
Secret s;
s.out(); // Работает
}
int main(int argc, const char * argv[])
{
Public p;
p.secret();
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости