0

C ++のgtkmmについて学んでいます。新しいテキスト行を追加するための単純な TextBuffer を取得するのに問題があります。TextViewer (メッセージと呼ばれる) と TextBuffer (textBuffer と呼ばれる) を含む HBox である OutputBox というクラスがあります。

以下は、OutputBox クラスの小さなチャンクです。

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

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

文字列を addText に渡すと、新しい文字列がバッファに追加されることを期待していますが、代わりに seg fault が発生します。

gdb を介して実行した後、エラーが gtkmm ライブラリから発生していることがわかります。

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

これが何を言っているのかもよくわかりません。クラスを間違って使用していると思います。

4

1 に答える 1

1

デバッガーを接続して、障害が発生した場所を確認することをお勧めします。

GTKmm ライブラリ内で発生する場合は、API の使用方法が間違っている可能性があります。コードで発生した場合は、正しい方向に向けられます

:)

于 2009-07-17T21:25:05.437 に答える