2015-04-15 166 views
-2

我正在使用openframeworks。這是基於C++的。C++:無法使用類型爲'void'的右值初始化類型爲'guiBaseObject *'的變量

我有以下代碼:

guiBaseObject *item = panel.addSlider("motor_speed", 0, 0, 100); 

而且我無法理解爲什麼我收到以下錯誤。

/Users/CREATER/Documents/of_v0.8.4_osx_release/apps/myApps/MapamokStepper/src/MotorControl.cpp:38:20: Cannot initialize a variable of type 'guiBaseObject *' with an rvalue of type 'void' 
+1

'addSlider'可能返回'void',所以你不能在'guiBaseObject *'從它返回。 – CoryKramer

+0

'addSlider()'的返回類型是什麼? – Biffen

+0

我的文檔中沒有看到['addSlider'](http://openframeworks.cc/documentation/),但我認爲它會返回'void'。 – CoryKramer

回答

-1

C++是一種強類型語言。你真的需要將左值轉換爲左值。 在這裏,你的情況應該是這樣的:

guiBaseObject *item = (guiBaseObject *)panel.addSlider("motor_speed", 0, 0, 100); 

否則會給出一個編譯時錯誤。

+0

不完全是最佳做法。 – Biffen

+1

你不能對任何東西施放'void',因爲它什麼都不是。 – molbdnilo

+1

這是一種(適度)強類型語言,因此您需要聲明正確類型的變量,而不是使用強制類型通過編譯器強制使用無效代碼。 –

1

如果你想有機會獲得滑塊,你可以做這樣的事情:

ofIntSlider motorSpeed; 
panel.add(motorSpeed.setup("motor_speed", 0, 0, 100)); 
相關問題