簡體   English   中英

GTKMM錯誤:空虛值不會被忽視,因為它應該是

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM