Можно ли в классе С выполнить расчет int a / int b и записать результат в переменную класса С int c?
class A {
int a = 5;
};
class B {
int b = 10;
};
class C {
friend class A;
friend class B;
int c;
};
Если вас интересует тот вопрос, может ли дружественный класс использовать закрытые имена классов, чьим другом он является, то да - например так:
#include <iostream>
using std::cout;
class C; // вначале обьявите
class A {
friend class C;
int a;
public:
A() : a(10) { } // в конструкторе инициализировать, а не так как вы сделали
};
class B {
friend class C;
int b;
public:
B() : b(5) {}
};
class C {
int c; // с это не C, поэтому можно
public:
C() { A t; B k; c = t.a/k.b;} // нужно создавать обьекты типов
int get_res() const { return c; }
};
int main()
{
C g;
std::cout << g.get_res();
return 0;
}
Понимаете, если я скажу, что вы мой друг - вы же меня от моего заявления не пустите к себе переночевать?
А вот я вроде как должен, раз заявил, что вы мой друг...
Вот так и у вас - класс C заявил, что он - друг A и B, так что он им доверяет свои внутренности :) А они ему такое доверие не высказали.
Согласитесь, было бы слишком небезопасно - так любой класс, любая функция могли бы получить доступ к любым запрятанным полям - просто объявив о своем желании...
В вашем примере нет никакого a и нет никакого b.
В вашем примере есть только нестатические поля классов A::a и B::b. Нестатические поля классов не существуют физически сами по себе. Нестатические поля классов существуют только внутри объектов (экземпляров) этих классов, только вместе с этими объектами. Поэтому, пока вы не создадите объекты этих классов, никаких a и b не будет.
Если у вас на руках есть экземпляр aa класса A и экземпляр bb класса B, то вы, при наличии соответствующих прав доступа, сможете запросто вычислить значение aa.a / bb.b. Но пока у вас нет таких экземпляров, то и говорить не о чем, ибо никаких a и b не существует.
У вас в коде я не вижу ни малейшего намека то, что класс C работает с какими-то экземплярами классов A и B. А без экземпляров ни о каких a и b и говорить не приходится.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники