je suis tombé sur le code suivantfonction ami et la mise en œuvre
class ExDer1 : public ExBase
{
public:
friend int Der1Fn()
{
....
}
};
Je suis un peu confus ici avec
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 ?
}
Normalement, je me attends à voir quelque chose comme le
suivantfriend int Der1Fn(); //No implementation. Indicating that the Der1Fn is a method outside this class
ce qui signifie essentiellement qu'une fonction int Der1Fn()
accéderait aux variables privées de la classe ExDer1. Cependant, cela a une implémentation. Quelqu'un pourrait-il expliquer ce que cela signifie?
Mise à jour:
Donc, si je le code suivant
class ExDer1 : public ExBase
{
public:
friend int Der1Fn()
{
std::cout << "Hello World";
}
};
int main()
{
Der1Fn(); // error C3767: 'Der1Fn': candidate function(s) not accessible
//.....
}
Comment puis-je appeler Der1Fn?
Où avez-vous appris que vous ne pouvez pas fournir la mise en œuvre de la fonction ami dans la classe? – P0W
Je regardais exemple à http://msdn.microsoft.com/en-us/library/h2x4fzdz.aspx ils n'ont aucun exemple avec une mise en œuvre qui a déclaré ami. – Rajeshwar
Cela signifie que c'est l'implémentation de la fonction. Qu'est-ce que tu ne comprends pas? –