我使用这个代码: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