2009-07-17 9 views
0

Je suis en train d'apprendre à propos de gtkmm pour C++. J'ai du mal à obtenir un simple TextBuffer pour ajouter une nouvelle ligne de texte. J'ai une classe appelée OutputBox qui est un HBox avec un TextViewer (appelé messages) et un TextBuffer (appelé textBuffer) dedans.Segfault lors de l'appel à Gtkmm textBuffer-> insert

Voici une petite chunck de la classe OutputBox:

OutputBox::OutputBox() { 
    textBuffer = messages.get_buffer(); 
}; 

void OutputBox::addText(string newText) { 
    textBuffer->insert(textBuffer->begin(), newText); 
}; 

Maintenant, je pense que quand je passe une chaîne en addText, la nouvelle chaîne sera ajoutée au tampon, mais je reçois une erreur de seg .

Après l'exécution à travers gdb, je vois que l'erreur provient des bibliothèques gtkmm ici:

template <class T_CppObject> inline 
T_CppObject* RefPtr<T_CppObject>::operator->() const 
{ 
    return pCppObject_; 
} 

Je ne suis pas vraiment sûr de ce que cela me dit non plus. Je suppose que j'utilise incorrectement la classe.

Répondre

1

Je vous conseille d'attacher un débogueur pour voir où l'erreur se produit.

S'il se produit dans les bibliothèques GTKmm, alors vous êtes probablement en utilisant l'API de manière incorrecte. Si cela se produit dans votre code, il vous dirigera dans la bonne direction

:)