【问题标题】:Gsv::buffer errorGsv::缓冲区错误
【发布时间】:2015-06-26 10:37:57
【问题描述】:

在我的 c++ 项目中,我想使用 GTKsourceview 库中的 Gsv::buffer。 我这样声明我的缓冲区:

Glib::RefPtr<Gsv::Buffer> buffer;

我创建它:

buffer->create();

但是当我想使用一些从 Gtk::buffer 继承的函数时:

 buffer->set_text("somethings");

可执行的退出和返回:

分割错误(核心转储)

有什么问题?

感谢您的帮助

【问题讨论】:

    标签: c++ gtkmm coredump gtksourceview


    【解决方案1】:

    你创建了一个指针,但实际上并没有让它指向任何地方。本质上,buffer 是一个空指针。

    来自the RefPtr default constructor refernece

    之后它将为空,使用-&gt; 将导致分段错误。

    您需要显式创建指向的对象,使用 static Gsv::Buffer::create 函数,例如

    Glib::RefPtr<Gsv::Buffer> buffer = Gsv::Buffer::create();
    

    【讨论】:

    • 我想知道编译器是否应该/确实警告通过对象使用静态函数。
    • G++ 我的编译器不会对此发出警告。谢谢你解决了我的问题谢谢
    猜你喜欢
    • 2016-07-17
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 2016-01-10
    • 2012-03-12
    • 2013-07-20
    • 1970-01-01
    相关资源
    最近更新 更多