Я использую этот код:
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);
}
Компилируется нормально.Но выдает эту странную ошибку времени выполнения:
Ошибка сегментации: возвращаем 139
Я проследил проблему до: gtk_text_view_get_buffer(GTK_TEXT_VIEW(_srcset[index]));
ПРИМЕЧАНИЕ. Я использую GtkSourceView вместо GtkTextView, но это не может быть проблемой, потому что я получаю ту же ошибку, когда я пытаюсь GtkTextView.
ПРИМЕЧАНИЕ. Я использую Gtk 2x
ПРИМЕЧАНИЕ. Я не уверен, стоит ли отмечать этот вопрос на C или C ++.клюв.Gtk + является C lib.Но я использую C ++.Так что я просто покажу оба.