Ciao.
Sto studiando come e' stato scritto il codice del progetto
BSGUI (una GUI semplice semplice basata su openGL).
Ci sono alcune cose che non capisco.
Ad esempio nel codice sotto (un file .h) non capisco l'uso della
struttura. Sembra essere tale e quale ad una classe...addirittura mi pare di capire che la struttura abbia persino un costruttore (Checkbox(Control *parent, int x1, int y1, int x2, int y2,char *caption) ed un distruttore (virtual ~Checkbox()
Nelle documentazioni che ho trovato non accennano a quest'uso delle strutture (o forse lo fanno piu' avanti, nelle sezioni avanzate a cui non sono ancora arrivato). Vorrei sapere come giudicate questo utilizzo e che differenza c'e'tra questa struttura ed una classe vera e propria...
Poi ho due dubbi da vero neofita (se e' troppo complicato potete non rispondermi, mi interessa di piu' l'uso della struttra sopra).
1) Suppongo che l'ifndef serva a fare il modo che il codice venga
eseguito solo la prima volta. Ma di preciso cosa accade? Cioe' se io ho 10 files, e tutti quanti hanno l'inclusione del file qui sotto, accadra' che il primo che lo include definisce il __BSGUI_CHECKBOXES_H_INCLUDED__ e gli altri 9 che lo includono si troveranno questa variabile (globale?) gia' definita e non lo leggeranno? Se si, il compilatore dove andra' a prendere i dati che gli occorrono, per i 9 files rimanenti?
2) Che significa
DataManager<bool>
??
Ciao e grazie...ah, ecco il codice che non capisco:
codice:
#ifndef __BSGUI_CHECKBOXES_H_INCLUDED__
#define __BSGUI_CHECKBOXES_H_INCLUDED__
struct Checkbox : public Control
{
char *caption;
bool hover;
bool pushed;
DataManager<bool> checked;
Checkbox(Control *parent, int x1, int y1, int x2, int y2,char *caption);
virtual ~Checkbox();
virtual void setCaption(char *newCaption);
virtual void render();
virtual void setState(bool checked);
virtual void onMouseDown(int x, int y, int b);
virtual void onMouseUp(int x, int y, int b);
virtual void onMouseEnter();
virtual void onMouseExit();
};
#endif