Можно ли сделать другом класса функцию другого класса?

234
03 апреля 2018, 00:28

Имеется два класса Koords и Comlexity. В класс Complexity входит один объект класса Koords, при этом в классе Complexity есть функция, котороя оперирует значениями объекта Koords. Для удобства хочется, чтобы эта функция могла обращаться непосредственно к членам класса Koords - для этого я сделал Complexity другом Koords. Но вот мне интересно, а можно ли сделать другом только необходимую функцию, а не весь класс?

Answer 1

Пуркуа бы и не па?

class B;
class A
{
public:
    void Friend(B&);
    void Enemy(B&);
};
class B
{
public:
    B(int x):x(x){}
private:
    int x;
    friend void A::Friend(B&);
};
void A::Friend(B&b) { cout << b.x << endl; }
void A::Enemy(B&b) { cout << b.x << endl; }
int main(int argc, const char * argv[])
{
    B b(5);
    A a;
    a.Friend(b);
    a.Enemy(b);
}

Попробуйте скомпилировать - проблемы будут только в Enemy...

READ ALSO
Чем отличаются ссылки от указателей в С++

Чем отличаются ссылки от указателей в С++

В чем принципиальное отличие ссылки от указателя в С++? Когда лучше использовать ссылку, а когда указатель? Какие ограничения есть у первых,...

312
При определении одной и той же переменной в разных функциях код стопорится | Arduino c++

При определении одной и той же переменной в разных функциях код стопорится | Arduino c++

Вчера победил многозадачность в Arduino и решил не делать 4 переменные 2 из которых копия других 2Засунул одинаковые переменные в разные функции

185
Как настроить QT creator в Mint Linux

Как настроить QT creator в Mint Linux

Здравствуйте, нужно для лабораторных писать ПО под LinuxПоставил на Virtual Box Mint(писали что он лучше всего для новичков подойдет)

212
Использование friend funtions в С++

Использование friend funtions в С++

Здравствуйте, изучаю вот OpenGL, и наткнулся на совсем мне непонятную проблему, вот код:

303