2009-07-17 8 views
0

Ich lerne nur über gtkmm für C++. Ich habe Probleme, einen einfachen Textpuffer zum Hinzufügen einer neuen Textzeile zu erhalten. Ich habe eine Klasse namens OutputBox, die eine HBox mit einem TextViewer (genannt Nachrichten) und einem TextBuffer (genannt TextBuffer) darin ist.Segfault beim Aufruf von Gtkmm textBuffer-> Einfügen

Hier ist eine kleine chunck der OutputBox Klasse:

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

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

ich jetzt erwarten, dass, wenn ich einen String in addText passieren, wird die neue Zeichenfolge in den Puffer hinzugefügt werden, aber stattdessen bekomme ich einen seg Fehler .

Nachdem es durch gdb läuft, sehe ich, dass der Fehler von den gtkmm Bibliotheken kommt hier:

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

Ich bin nicht wirklich sicher, was das mich entweder sagt. Ich nehme an, dass ich die Klasse falsch verwende.

Antwort

1

Ich würde empfehlen, einen Debugger anfügen, um zu sehen, wo der Fehler auftritt.

Wenn es in GTKmm-Bibliotheken auftritt, dann sind Sie wahrscheinlich mit der API falsch. Wenn es in Ihrem Code auftritt, wird es Sie in die richtige Richtung zeigen

:)

Verwandte Themen