Questo esempio estremamente minimale non riuscirà a compilare perché A<int>
non può accedere al membro privato i
in A<double>
Come consentire ad un metodo di accedere ai membri privati di altre istanze di classi template?
template <class T>
class A {
int i;
public:
template <class U>
void copy_i_from(const A<U> & a){
i = a.i;
}
};
int main(void) {
A<int> ai;
A<double> ad;
ai.copy_i_from(ad);
return 0;
}
so che posso fare tutte le istanze del modello amici gli uni degli altri (vedi: How to access private members of other template class instances?), ma dal momento che ho solo un metodo che richiede l'accesso (come nell'esempio) preferirei limitare l'amicizia a quel metodo. È possibile?
Per il downvoter: mi piacerebbe sapere cosa posso fare per migliorare la domanda! – DarioP
Entrambe le risposte e la domanda stessa sono state downvoted in silenzio; Sospetto che non abbia niente a che fare con il contenuto. – Angew