Esaminare la creazione di una libreria GUI per un motore di gioco. Generalmente evito i puntatori se non ne ho bisogno e nel mio esempio sottostante trovo che non lo faccio e funziona, ma solo curioso di sapere se questo disegno è generalmente considerato una buona pratica o se qualcuno ha commenti su di esso.
int main()
{
// all widgets are positioned and sized according to the window size
Window wndOptions("wndOptions");
Button cmdExit("cmdExit");
// the window doesn't own the widgets nor does it create the widgets so it's not responsible for deleting the widgets
wndOptions.AddWidget(&cmdExit);
// this is how you can find a control and get it casted also. make your variable a reference
Button& test = wndOptions.FindWidget<Button>("cmdExit");
test.SetPosition(50, 25);
return 0;
}
Come puoi vedere, l'idea è di creare i tuoi controlli (in questo caso il pulsante) e passare un puntatore ad essi nella Finestra. Quindi puoi trovare il controllo per nome restituendo un riferimento a quel controllo in cui puoi manipolare il controllo. In questo esempio è un po 'inutile usare FindWidget () dato che ho la variabile cmdExit, ma se dovessi passare la finestra intorno sarebbe un modo per trovare e usare i controlli.
Il problema più grande che ho è che FindWidget () potrebbe non trovare un widget. In questo momento lancio un'eccezione perché non trovo un controllo che ritengo una vera eccezione e non qualcosa che dovrebbe accadere molto se non del tutto.
Qualche commento sull'uso fatto in questo modo?