Tu veux cloner un bouton ? Rien de plus simple :
SGUI::Container container;
auto button1 = container.createButton();
auto button2 = std::make_shared<SGUI::Button>(*button1);
container.addWidget(button2);
Il faut juste pas oublier de le rajouter au Container par la suite
Mais tu viens de me donner une excellente idée, je vais rajouter un paramètre facultatif à createButton() qui prendra un Button à copier
Les std::shared_ptr sont très bien conçu, il serait dommage de s'en priver...
Leurs avantages sont nombreux :
- Ils "s'autogèrent" pour éviter les erreurs basiques sur les pointeurs
- Ils sont "shared" donc une modification d'un Widget dans le code, entraîne sa modification dans le Container
- Ils restent des pointeurs donc ils permettent le polymorphisme
PS : Les "auto" sont principalement là par feignantise, mais rien ne t'empêche ne pas les utiliser, car je ne les utilise que dans les fonctions d'exemples.
PS 2 : Ensuite les Callback, j'utilise les lambdas et cela fonctionne très bien.