PDA

View Full Version : [C++] Ereditarietà e funzioni friend


EnderIII
23-02-2008, 10:36
Quando una classe deriva "pubblicamente" da una classe base eredita anche le sue funzioni friend. Ma se dovessi ereditare la classe "privatamente" come faccio ad esporre la funzione friend per renderla nuovamente accessibile alla classe derivata (con i metodi della classe base è sufficiente una re-dichiarazione!).

class A{
public:

void f_interna(){}; // metodo della classe.

friend f_friend(A& Obj){}; // funzione friend.

};

classe B : private A{
public:

A::f_interna(); // Il metodo della classe A viene nuovamente esposto.

.................. // Devo ridefinire la funzione friend?
}

EnderIII
23-02-2008, 21:29
Ho risolto la questione. Se interessa è sufficiente scrivere:

classe B : private A{
public:

A::f_interna(); // Il metodo della classe A viene nuovamente esposto.

friend f_friend(B::A&); // La funzione friend è nuovamente pubblica.
};


... insomma me le canto e me le suono!

EnderIII
25-02-2008, 10:33
Come non detto. In questo modo compila ma non funziona!

Qualche idea?