Classi che si linkano a vicenda mediante puntatori:
Normalmente non è una cosa pulita da fare e il compilatore si arrabbia xkè nella prima classe A viene dichiarato un puntatore ad una seconda classe B che non è ancora stato dichiarato.
La soluzione sta nel dichiarare la classe B prima della classe A limitandosi al solo nome:
classB;
class A
{ ...
B* b_ptr;
};
class B
{ ...
A* a_ptr;
};
Errore tipo: invalid initialization of non-const reference of type *** from a temporary of type ***
in alcuni casi, all'interno di una singola linea istruzione, non è permesso creare variabili temporanee o fare conversioni di tipo:
Packet& operator >> (Packet& pa, PlGame& pl) {return pa >> (int)pl.mStatus;}
La soluzione consiste nell'usare variabili locali create fuori dal codice incriminato:
Packet& operator >> (Packet& pa, Player& pl) {int i; pa >> i; pl.mStatus = i; return pa;}
Trucco per unire std::string e char in una sola istruzione senza creare variabili temporanee:
Capita che il compilatore dica che nn sà come compilare (std::string)s = (char*)sc + (char)c
La soluzione è fargli crere subito dopo '=' il tipo string che poi sarà in grado di inglobare il resto
std::string s = string("Player") +(char)('A'+ipl);
Versione stampabile- Accedi o registrati per inserire commenti.
- letto 566 volte
- Send to friend

