0

我正在尝试在 GTKMM 中创建一个包含一个框的简单窗口。我已经让窗口部分工作了,但我无法让我的盒子代码工作。我正在关注本教程

我认为本教程有点过时了,因为 Anjuta(我正在使用的 IDE)生成了一些不同的代码。这是我应该添加一个框的代码:

 #include <gtkmm.h>
#include <iostream>
#include "config.h"
 using namespace Gtk;



  int main (int argc, char *argv[])
  {
Gtk::Main kit(argc, argv);


Gtk::Window *main_win = new Gtk::Window (Gtk::WINDOW_TOPLEVEL);
main_win->set_title ("Image-Viewer");

Gtk::Box *box = Gtk::manage (new Gtk::Box());
box ->set_orientation (ORIENTATION_VERTICAL);
box->set_spacing(6);
*main_win -> add(*box);

if (main_win)
{
    kit.run(*main_win);
}
return 0;
 }

在本教程的代码中,窗口的创建方式不同。正如您在下面看到的,我的代码中的窗口正在创建,因此它位于堆中,而不是堆栈中。(或者至少我认为[我是 C++ 新手])。我知道堆中的项目应该像指针一样使用,所以对于 add 函数,我这样做了(而不是使用教程中描述的点符号)。当我运行此代码时,我收到一条错误消息,说明如下:

error:void value not ignored as it out to be

该错误与在窗口上调用的 add 方法有关。有人可以告诉我我做错了什么吗?谢谢

4

1 回答 1

2

该指令:

Gtk::Window *main_win = new Gtk::Window (Gtk::WINDOW_TOPLEVEL);

声明指向 的指针Gtk::Window。稍后,您执行以下操作:

*main_win -> add(*box);

operator ->这是不正确的,因为您基本上是在取消引用指针之后尝试应用main_win- 这种取消引用的结果不是指针本身,而是对 type 对象的引用Gtk::Window

要解决此问题,请删除额外的取消引用:

main_win -> add(*box);

笔记:

我不知道Gtk::Window它的成员函数add(),但如果是add()接受指针作为其参数的情况,那么你也不应该取消引用box

于 2013-03-28T23:29:44.347 回答