Jump to Navigation

Appunti e Trucchi di Programmazione C++ con Classi Orientate agli Oggetti

Ritratto di Fixus

 

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:

class B;
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);

 

Taxonomy upgrade extras: 


Main menu 2

by Dr. Radut.