2015-06-11 3 views
0

Я новичок в работе с C++. Мне нужно объявить экземпляр класса как параметр функции в другом классе с экземпляром параметра, объявленным как друг. Я иллюстрирую пример.Создание экземпляра класса Friend в параметрах функции

class foo(){ 
    private: 
     void a(){ 
      // function definition 
       } 
} 

class other_foo(){ 
    public: 
     void b(foo f){ 
      // function definition 
       } 

} 

В приведенном выше примере мне нужно объявить класс other_foo как друг для обув, так что я могу использовать класс Foo частные функции „а“. Я прочитал ряд других ссылок, но нет окончательного руководства относительно того, действительно ли это возможно или нет. Если нет, можете ли вы предложить обходной путь? Я попытался объявить other_foo как друга в определении класса foo, но компилятор сделал ошибку с other_foo, что частные методы недоступны. Я также попробовал объявить экземпляр как «friend foo f» в самом параметре, но компилятор сделал для этого ошибку. Где мне действительно нужно объявить, что класс other_foo является классом друзей для класса foo?

ответ

0
class foo{ 
private: 
    void a(){ 
     // function definition 
    } 
    friend class other_foo; 
}; 

class other_foo{ 
public: 
    void b(foo f){ 
     // function definition 
    } 
}; 

Теперь other_foo может получить доступ к закрытым членам foo «s. Скобки перед именем класса были ненужными и добавили ; после определения класса.

Смежные вопросы