В настоящее время я читаю книгу о C++
и у нее есть некоторые упражнения. В одном из упражнений предлагается построить два класса, где каждый из них имеет метод друга для другого. Моя нынешняя догадка выглядит следующим образом:Два класса с другими методами в C++
#include <iostream>
using std::cout;
using std::endl;
class Y;
class X{
public:
void friend Y::f(X* x);
void g(Y* y){cout << "inside g(Y*)" << endl;}
};
class Y{
public:
void friend X::g(Y* y);
void f(X* x) {cout << "inside f(X*)" << endl;}
};
Но мое предположение не компилируется, потому что класс X
есть void friend Y::f(X* x);
метод декларации. Как я могу решить головоломку? Пожалуйста, дайте мне еще несколько догадок.
Вы уверены, что это точная формулировка текста? –
Книга была написана на английском языке, но была переведена на русский язык, поэтому я не могу быть уверен, что переводчик абсолютно прав. Но эта формулировка достаточно интересна. – gkuzmin
Дубликат http://stackoverflow.com/questions/6310720/declare-a-member-function-of-a-forward-declared-class-as-friend –