【问题标题】:Incompatible cv qualifiers in parent class method父类方法中不兼容的 cv 限定符
【发布时间】:2014-03-20 14:22:26
【问题描述】:

我正在修补 C++ 和 gtkmm,试图创建一个自定义类,该类调用 .glade 文件来构建 Gtk 相当基本的接口。这个类派生自Gtk::Window,但是当我在类本身上调用get_widget 方法时,我得到了错误:

types ‘const T_Widget*’ and ‘myClass* const’ have incompatible cv-qualifiers

类定义:

class myClass: public Gtk::Window{

    public:
    myClass(); 

    protected:
    //...
    Glib::RefPtr<Gtk::Builder> builder;
    //...

}

但是我正在尝试将 gade 文件中的数据上传到我的班级(在班级构造函数上):

//...
builder = Gtk::Builder::create_from_file("../glade/myClass.glade");
builder->get_widget("window1",this);
//...

【问题讨论】:

    标签: c++ class gtk gtkmm glade


    【解决方案1】:

    myClass* constconst myClass* 不同。 在第一个中,指针是常量,在第二个中,对象是。 声明如下:const myClass*

    但是你的问题似乎无关(我的错),GTK 对派生类有一个特殊的功能: Gtk::Builder::get_widget_derived, 改用这个。

    【讨论】:

    • 我应该在哪里做呢?
    • get_widget 替换为get_widget_derived 后出现错误error: no matching function for call to ‘Gtk::Builder::get_widget_derived(const char [8], myClass* const)’ builder-&gt;get_widget_derived("window1",this);
    • 你能显示更多代码吗?根据文档,无论如何您都不应该在构造函数中执行此操作: Gtk::DerivedBox* pBox = 0; refXml->get_widget_derived("mybox", pBox);他们为你创建了一个对象,所以传递它是行不通的。
    • 我正在使用 gtkmm 书籍部分中关于“超时”developer.gnome.org/gtkmm-tutorial/unstable/… 的示例,我正在尝试修改它以从 gade 文件构建 GUI。
    • 我确实更改了构造函数,但省略了 gtkBuilder 部分,因为我已经有一个生成器作为类成员
    猜你喜欢
    • 1970-01-01
    • 2016-03-12
    • 2015-10-22
    • 2013-08-15
    • 2021-12-26
    • 1970-01-01
    • 2016-06-11
    • 2011-03-08
    相关资源
    最近更新 更多