Я создал три класса, в каждом по приватному атрибуту, и с помощью дружественной функции использовал их значения. Но функция дружественна лишь к одному классу и должна уметь работать только с одним элементом, и выдавать ошибку невозможности доступа к атрибутам других классов?
#include <iostream>
using namespace std;
class hom {
private:
int ppp = 2;
friend void aat(hom& obj);
};
class hliw {
private:
int zalu = 3;
friend void aat(hom& obj);
};
class tov {
private:
int za = 3;
friend void aat(hom& obj);
};
hliw w;
hom q;
tov r;
void aat(hom& obj) {
int result = q.ppp + w.zalu+r.za;
cout << result;
}
int main() {
aat(q);
}
Ваша функция объявлена как дружественная в трех классах, поэтому она может обращаться к закрытым полям всех трех классов, в которых вы объявили ее другом.
Что она и делает :)
Попробуйте удалить строку
friend void aat(hom& obj);
из одного из классов и посмотрите на результат - функция больше не сможет обратиться к закрытому полу этого класса.
И, кстати, код и не должен "крашиться", он должен перестать компилироваться.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как открыть файл с именем, заданым в отдельной строке без указания полного пути, только для чтения? В какой директории файл должен находиться?
Ввести строку и словоОпределить сколько раз слово встречается в строке
Нужно через перебор заходить на каждую страницу и нажимать кнопкуИ дождать когда кнопка будет нажата