Segfault при вызове Gtkmm textBuffer-> insert - PullRequest
0 голосов
/ 18 июля 2009

Я только что узнал о gtkmm для c ++. У меня проблемы с получением простого TextBuffer для добавления новой строки текста. У меня есть класс с именем OutputBox, который является HBox с TextViewer (называемым сообщениями) и TextBuffer (называемым textBuffer).

Вот небольшой фрагмент класса OutputBox:

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

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

Теперь я ожидаю, что когда я передам строку в addText, новая строка будет добавлена ​​в буфер, но вместо этого я получаю ошибку сегмента.

После запуска через gdb, я вижу, что ошибка происходит из библиотек gtkmm здесь:

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

Я не совсем уверен, что это говорит мне тоже. Я предполагаю, что я неправильно использую класс.

1 Ответ

1 голос
/ 18 июля 2009

Я бы посоветовал подключить отладчик , чтобы увидеть, где происходит ошибка.

Если это происходит в библиотеках GTKmm, то вы , вероятно, неправильно используете API. Если это происходит в вашем коде, то оно укажет вам правильное направление

:)

...