я наткнулся на следующий кодFriend функция и реализация
class ExDer1 : public ExBase
{
public:
friend int Der1Fn()
{
....
}
};
Я немного запутался здесь с
friend int Der1Fn()
{
//This has an implementation .Why is it a friend then ? since it can access the private/protected variables of the ExDer1 class ?
}
Обычно я бы ожидать, чтобы увидеть что-то вроде следующего
friend int Der1Fn(); //No implementation. Indicating that the Der1Fn is a method outside this class
, что в основном означало бы, что функция int Der1Fn()
будет обращаться к частным переменным класс ExDer1. Однако это имеет реализацию. Может ли кто-нибудь объяснить, что это значит?
Update:
Так что, если у меня есть следующий код
class ExDer1 : public ExBase
{
public:
friend int Der1Fn()
{
std::cout << "Hello World";
}
};
int main()
{
Der1Fn(); // error C3767: 'Der1Fn': candidate function(s) not accessible
//.....
}
Как позвонить Der1Fn?
Где вы узнали, что вы не можете обеспечить реализацию функции друга внутри класса? – P0W
Я посмотрел пример на http://msdn.microsoft.com/en-us/library/h2x4fzdz.aspx, у них не было примера с реализацией, объявившей друга. – Rajeshwar
Это означает, что это реализация функции. Что ты не понимаешь? –