J'ai fait une variable de pointeur, ptr_view, dans un cpp principal pour l'allocation dynamique pour créer des vues & boutons dans l'écran. Et sch, ceci est un pointeur commun dans class_A, class_B ... pour indiquer la classe principale pour accéder à ce pointeur ptr_view. Lorsque vous appuyez sur le bouton class_A, la fonction comme ci-dessous est en cours d'exécution.allocation dynamique C++ dans cocos2d-x
void class_A::ChangeView_B()
{
CC_SAFE_DELETE(sch->ptr_view);
sch->ptr_view = new class_B;
sch->ptr_view->RCreation(main_view);
}
mais cela crée évidemment une erreur, je suis enfin savoir pourquoi, depuis la mémoire de Class_A est terminée lorsque CC_SAFE_DELETE est en cours d'exécution si « sch » est plus exister en essayant d'accéder SCH> ptr_view . Mais ne savent toujours pas comment résoudre ce problème. Est-ce que quelqu'un peut me donner un petit indice pour traverser cette situation?
Merci d'avoir répondu à ma question! Mais quand je supprime le code CC_SAFE_DELETE (sch-> ptr_view) et insère une nouvelle fonction comme cleanUp(), qui supprime tous les boutons et ressources que class_A a laissés dans la scène, aucune erreur ne s'est produite. J'ai également eu le débogage ceci et a trouvé la suppression ptr-> view crée l'erreur. Après ce code, "sch" renvoie null. Avez-vous d'autres idées qui peuvent résoudre uniquement en C++? Je ne connais pas du tout l'Objective-C. –
J'ai résolu ce problème très simplement. J'ai juste déplacé le "ptr_view" à l'autre classe de singleton donc je n'ai pas besoin de faire une telle variable comme "sch" dans chaque classe ... Mais merci beaucoup logan20735, j'ai appris à connaître le pointeur intelligent. –