Erreur avec Google Mock et Shared_From_This?
-
13-11-2019 - |
Question
Je reçois l'erreur suivante jetée dans un test de mien:
Fichier inconnu: Erreur: C ++ Exception avec description "TR1 :: bad_weak_ptr" jeté dans le corps du test.
Entrantez la ligne de test Une ligne à la fois, je peux voir que l'exception est lancée sur une ligne où j'appelle:
MyClassSharedPointer myClassPointer(shared_from_this());
J'ai besoin d'un pointeur sur l'objet que le code exécute, car je dois définir l'objet en tant qu'observateur de l'un de ses membres (en utilisant Boost :: Signaux pour mettre en œuvre l'observateur).Le code semble fonctionner correctement tout en exécutant normalement, mais de mon code de test, je reçois cette erreur.
La solution
DOH Le problème était que, dans mon code de production, l'objet MyClass est référencé en tant que Shared_PTR alors que dans mon code de test, j'ai déclaré par erreur l'objet MyClass en tant que pointeur nue.Ce qui explique pourquoi shared_from_this()
ne fonctionnait pas ... parce que this
n'était pas en fait un partage_ptr.