[英]GTKMM Error: Void Value Not Ignored As it Ought to Be
我試圖在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方法有關。 可以告訴我我做錯了什么嗎? 謝謝
這條指令:
Gtk::Window *main_win = new Gtk::Window (Gtk::WINDOW_TOPLEVEL);
聲明一個指向Gtk::Window
的指針。 之后,你做:
*main_win -> add(*box);
這是不正確的,因為在你已經取消引用main_win
指針之后,你基本上嘗試應用operator ->
- 這個解除引用的結果不是指針本身,而是對Gtk::Window
類型的對象的引用。
要解決此問題,請刪除額外的解除引用:
main_win -> add(*box);
注意:
我不知道Gtk::Window
及其成員函數add()
,但如果是add()
接受指針作為其參數的情況,那么你也不應該取消引用box
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.