Я написал два класса: функция первого класса не может получить доступ к частному члену второго класса, хотя эта функция является другом для второго класса. Затем я нашел этот пример из msdn.microsoft.com но есть еще ошибка:cannot access private member declared in class B
Функции и классы членов класса в качестве друзей
здесь code from MSDN:
class B;
class A {
public:
int Func1(B& b);
private:
int Func2(B& b);
};
class B {
private:
int _b;
// A::Func1 is a friend function to class B
// so A::Func1 has access to all members of B
friend int A::Func1(B&);
};
int A::Func1(B& b) { return b._b; }//the same error as the one below is here
int A::Func2(B& b) { return b._b; }
, когда я пишу class A
себя как друга для B
там нет ошибка, но я хочу иметь только функцию, которую я хочу быть другом для класса B не целым class A
Это ошибка моего компилятора или этот код является неправильным?
У вас не должно возникнуть проблем, если [вы сделаете это правильно] (http://ideone.com/XAaIsy). Если ваш компилятор не сломан. – juanchopanza
Являются ли MS $ в fish'n'chips («здесь треска с msdn.microsoft.com»)?! - Во всяком случае избегайте друзей на C++. Не очень хорошая идея, так как обычно это вызывает больше проблем, чем стоит –