Объявление класса друга

Я новичок в программировании на C++. Можем ли мы объявить некоторых членов класса друзьями другого класса? это означает, что у класса A есть три функции-члена, и вместо того, чтобы объявлять весь класс своим другом другого класса B (скажем), я могу объявить только одного члена класса A в качестве друга классу B, поэтому, пожалуйста, помогите.

5 ответов

Решение

Да, вы можете объявить одну функцию-член как друга другого класса.
Образец онлайн:

#include<iostream>
class Myclass;
class Otherclass
{
    public:
      void doSomething(Myclass &obj);

};
class Myclass
{
    int i;
    friend void Otherclass::doSomething(Myclass &obj);
};
void Otherclass::doSomething(Myclass &obj)
{
    obj.i = 10;
    std::cout<<obj.i;
}


int main()
{
    Myclass obj;
    Otherclass obj2;
    obj2.doSomething(obj);
    return 0;
}

Да:

class A
{
    public:
        void func_1();
        void func_2();
        void func_3();
};

class B
{
    friend void A::fund_2();
    void plop(); // only A::func_2() can call this function
};

После объявления класса-друга все функции-члены класса-друга становятся друзьями класса, в котором был объявлен класс-друг. источник

Не для того, чтобы быть грубым с вами, но посмотрите, что я нашел, просто прибегая к помощи "g ++ другу функции класса":

Функции друзей и классы

... и еще около 200

Да.

Например, спросите вики (они знают все):

http://en.wikipedia.org/wiki/Friend_function

Или сделайте простой поиск...

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