Un objet d'une classe avec un constructeur fermé ne peut être créé qu'en utilisant une fonction statique spéciale de cette classe.
Bien que le compilateur ne jure pas actuellement par le code que vous avez cité, cela sera certainement corrigé à l'avenir.
La méthode statique proposée dans ce cas sera une sorte d'auto-illusion, car elle sera essentiellement un constructeur. Vous devrez l'appeler explicitement.
Vous pouvez utiliser un pointeur intelligent pour appeler le destructeur.
Глава 5. Умные указатели Глава 6. Ведущие указатели и дескрипторы Глава 7. Грани и другие мудрые указатели Глава 8. Коллекции, курсоры, итераторы Глава 9. Транзакции и гениальные указатели
En fait, il est logique que ça ne fonctionne pas. Vous ne pouvez pas faire en sorte que le destructeur d'un pointeur intelligent soit appelé avant le destructeur de la classe.
Je modifie l'Expert Advisor et, soit par CTRL+F5, soit directement dans le testeur, je vois des résultats adéquats.
Ctrl+F5, c'est du débogage, non ? Mon problème n'est pas le débogage, mais l'exécution d'un test simple.
Comment créer un objet de classe cachée avec un constructeur fermé ?
C'est ainsi que les fuites arrivent.
Il n'est pas clair comment appeler un destructeur dans cette situation. Singleton ne l'est pas.
Un objet de classe dont le constructeur est fermé ne peut être créé qu'à l'aide d'une fonction statique spéciale de cette classe.
Bien que le compilateur ne jure pas actuellement par le code que vous avez cité, cela sera certainement corrigé à l'avenir.
Vous pouvez utiliser un pointeur intelligent pour appeler le destructeur.
Le destructeur doit être ouvert.
Un objet d'une classe avec un constructeur fermé ne peut être créé qu'en utilisant une fonction statique spéciale de cette classe.
Bien que le compilateur ne jure pas actuellement par le code que vous avez cité, cela sera certainement corrigé à l'avenir.
La méthode statique proposée dans ce cas sera une sorte d'auto-illusion, car elle sera essentiellement un constructeur. Vous devrez l'appeler explicitement.
Vous pouvez utiliser un pointeur intelligent pour appeler le destructeur.
Le destructeur doit être ouvert.
Si vous êtes sûr que le constructeur doit être privé, il n'y a pas d'autre moyen.
Un pointeur intelligent est un objet qui contient un pointeur simple et veille à ce qu'il soit supprimé à temps.
C'est l'option la plus simple.
Il existe également des pointeurs intelligents plus complexes.
Il est très bien écrit à leur sujet dans ce livre : https://rsdn.org/res/book/cpp/cpp_real_programmers.xml.
ce qui manque pour que le code se compile :
cette variante écrit 'var' - membre de la structure non défini
PS. J'ai reçu l'erreur ;)
int _val = dynamic_cast <CCore *>(_obj.core).var;void* depuis quelle construction dans le langage ?
c'est alors que les interfaces sont arrivées
quand les interfaces sont arrivées.
Si vous êtes sûr que le constructeur doit être privé, il n'y a pas d'autre moyen.
Un pointeur intelligent est un objet qui contient un pointeur simple et veille à ce qu'il soit supprimé à temps.
C'est l'option la plus simple.
Il existe des pointeurs intelligents plus complexes.
Il est très bien écrit à leur sujet dans ce livre : https://rsdn.org/res/book/cpp/cpp_real_programmers.xml.
En fait, il est logique que ça ne fonctionne pas. Vous ne pouvez pas faire en sorte que le destructeur d'un pointeur intelligent soit appelé avant le destructeur de la classe.