Existe-t-il un moyen de définir un point d'arrêt conditionnel sur des types non primitifs ?
Oui, une façon de le faire est de convertir un type non primitif en un type primitif, dans votre cas en char*
, et utilisez strcmp
pour comparer des chaînes.
condition 1 strcmp(myObject->myStringVar.c_str(),"foo") == 0
La réponse à votre question que vous avez posée est oui ... dans le cas général, cela fonctionne pour les classes et fonctions arbitraires et les fonctions membres de classe. Vous n'êtes pas obligé de tester les types primitifs. Surcharges de membres de classe, comme operator==
, devrait fonctionner.
Mais je suppose que le problème avec ce cas a à voir avec le operator==
pour std ::string étant une surcharge globale d'opérateur basé sur un modèle :
http://www.cplusplus.com/reference/string/operators/
Ainsi, les déclarations sont du type :
template<class charT, class traits, class Allocator>
bool operator==(const basic_string<charT,traits,Allocator>& rhs,
const charT* lhs );
Je ne serais pas surpris que gdb ne sache pas comment faire le lien pour vous.
Notez qu'en plus de ce que @ks1322 a dit, vous pouvez rester dans le domaine C++ et utiliser plus simplement std::string::compare():
condition 1 myObject->myStringVar.compare("foo") == 0