2015-04-15 140 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)); 
相关问题