Создание экземпляра класса Friend в параметрах функции
Я новичок в работе с C++. Мне нужно объявить экземпляр класса в качестве параметра функции в другом классе, а экземпляр параметра объявлен как друг. Проиллюстрирую на примере.
class foo(){
private:
void a(){
// function definition
}
}
class other_foo(){
public:
void b(foo f){
// function definition
}
}
В приведенном выше примере мне нужно объявить класс other_foo как друга для foo, чтобы я мог использовать приватную функцию класса "a" класса foo. Я читал о многих других ссылках, но нет никакого определенного руководства относительно того, действительно ли это возможно или нет. Если нет, не могли бы вы предложить обходной путь? Я попытался объявить other_foo другом в определении класса foo, но компилятор выдал ошибку с other_foo, что закрытые методы недоступны. Я также попытался объявить экземпляр как "friend foo f" в самом параметре, но компилятор выдал ошибку для этого. Где мне действительно нужно объявить, что класс other_foo является классом-другом для класса foo?
1 ответ
class foo{
private:
void a(){
// function definition
}
friend class other_foo;
};
class other_foo{
public:
void b(foo f){
// function definition
}
};
Теперь other_foo может получить доступ foo
частные участники. Скобки перед именем класса были ненужными и добавили ;
после определения класса.