我使用這個代碼:GtkTextBuffer問題,令人困惑的運行時錯誤。需要幫忙?
class editbook
{
GtkWidget* _nbook;
std::vector<GtkWidget*> _srcset; //and so on...
................................... .................................................. ......
void editbook::add_page()
{
GtkWidget* tmp = gtk_source_view_new();
_srcset.push_back(tmp);
gtk_notebook_append_page(GTK_NOTEBOOK(_nbook),tmp,gtk_label_new("untitled"));
}
..................................... .................................................. ...
void editbook::set_text(const std::string& text)
{
int index = gtk_notebook_get_current_page(GTK_NOTEBOOK(_nbook));
GtkTextBuffer* tbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(_srcset[index]));
gtk_text_buffer_set_text(GTK_TEXT_BUFFER(tbuffer),text.c_str(),-1);
}
編譯好。但是,給這個奇怪的運行時錯誤:
Segementation故障:返回139
我已經跟蹤下來的問題:gtk_text_view_get_buffer(GTK_TEXT_VIEW(_srcset[index]));
注:我使用的GtkSourceView代替GtkTextView,但可能不會是一個問題因爲我在嘗試GtkTextView時發現了相同的錯誤。
注意:我使用GTK 2X
注:我不知道是否與標籤C或C這個問題++。 BEC。 Gtk +是一個C庫。但我正在使用C++。所以我現在只需標記兩者。
你可以發佈什麼'_srcset'數組?順便說一句,爲什麼你不使用'GtkMM'(http://www.gtkmm.org/en/),它是C++封裝在'Gtk'上,以防你想用C++編寫你的代碼? –
@ another.anon.coward'std :: vector _srcset'。充滿了GtkSourceViews(gtk_source_view_new());至於GtkMM。坦率地說,我不使用它,因爲我是一個白癡...並且因爲它不能在Ubuntu上編譯出於某種原因(glibmmconfig.h未找到) –
ApprenticeHacker
您無法顯示足夠的信息。告訴我們你在什麼地方定義了_srcset,以及爲什麼'_srcset [index]'在執行時必須是一個有效的引用。 – sehe