PDA

Visualizza la versione completa : [C++] Overloading dell operatore *


nerd
24-03-2009, 17:54
Salve ragazzi, ho guardato un po in giro ma nn riesco a trovare una soluzione al mio problema.

Ho una classe A:


class A{
int x;
int y;
}


e una classe B:


class B{
A* aref;
int z;
public
A* operator*(){
return aref;
}
}


Ciò che voglio ottenere è l'overloading dell'operatore di referenziazione che quando chiamato su B mi restituisca la classe A.

Cioè poter fare:


B *b= new B();
*b->a++;


Non sono un esperto di C++ quindi può essere che abbia capito male qualcosa o che mi sia spiegato male.

Grazie

MacApp
24-03-2009, 18:53
Posto che, nel tuo codice:

manca un ";" dopo la chiusura della graffa della classe A;
manca un ":" dopo la parola public;
manca un ";" dopo la chiusura della graffa della classe B;
i membri della classe A sono inaccessibili perché privati alla classe A;


forse volevi scrivere un qualcosa del tipo:


#include <cassert>

class A{
public:
int x;
int y;
};

class B{
public:
A * aref;
int z;
public:
A* operator*(void){
return aref;
}
};

int main (void){
A a;
a.x = 123;
B b;
b.aref = &a;
assert ((*b) == &a);
assert ((*b)->x == a.x);
return 0;
}

Loading