我只是在学习gtkmm for 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_;
}


我也不太确定这是在告诉我什么。我以为我使用的是错误的类。

最佳答案

我建议附加一个调试器,以查看发生错误的位置。

如果它出现在GTKmm库中,则可能是API使用不正确。如果它出现在您的代码中,那么它将为您指明正确的方向

:)

07-28 14:06