J'ai des difficultés à essayer de trouver une solution qui me permettra de garder la portée d'un objet local à une méthode principale tout en attrapant une exception d'initialisation potentielle.Essayer de déterminer la portée de l'initialisation de la variable de classe
Le pseudo-code ci-dessous essaie de mieux illustrer mon problème.
int main() {
// Initialisation
SomeObject * object;
try {
SomeObject obj; // Initialisation can cause an exception
object = &obj;
}
catch (SomeException &ex) {
// Handle exception
}
// object out of scope undefined behaviour
// Application Logic
return 0;
}
Je comprends que l'objet sera supprimé une fois que les extrémités du bloc try et donc le pointeur lorsqu'il est utilisé conduira à un comportement non défini.
Comment puis-je faire quelque chose comme ceci et passer l'objet à la portée de la fonction afin que l'objet ne soit pas supprimé?
Je peux utiliser une solution C++ 14 dans mon projet.
méthode' - pourquoi dans ce cas et pas dec Lare-le dans la portée où vous voulez l'utiliser? Si vous déclarez un objet en tant que variable locale dans la sous-fonction - il sera de toute façon détruit après que vous ayez quitté cette sous-fonction pour 'main'. donc si vous avez besoin d'un objet dans la portée 'main' - déclarez-le ici – RbMm