Создание экземпляра класса 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частные участники. Скобки перед именем класса были ненужными и добавили ; после определения класса.

Другие вопросы по тегам