Disons que j'ai deux classes Foo et Bar, et je veux faire des amis Foo avec Bar sans changer Foo. Voici ma tentative:Modèle friend mixin?
class Foo
{
public:
Foo(){}
private:
void privateFunction(){}
};
template <class friendly, class newFriend>
class friends : public friendly
{
private:
friend newFriend;
};
class Bar
{
public:
Bar(){}
void callFriendlyFunction()
{
friendlyFoo.privateFunction();
}
private:
friends<Foo, Bar> friendlyFoo;
};
int main(int argc, char* argv[])
{
Bar bar;
bar.callFriendlyFunction();
return 0;
}
Obtenir une erreur du compilateur d'essayer d'appeler une fonction privée, donc apparemment il ne fonctionnait pas. Des idées?
+1: "foo amical" - Je creuse le son de:> –
l'amitié n'est pas héritée –
Je n'essaie pas de faire ça. – drby