将void *转换为其他类型

时间:2017-05-23 12:40:42

标签: c casting

我收到了错误:

error: 'void*' is not a pointer-to-object type

以下代码:

Button config_b1 = Button("b1");
Button config_b2 = Button("b2");
Button config_b3 = Button("b3");

const void *const buttons[3] PROGMEM = {
&config_b1, &config_b2, &config_b3
};

在某些功能中:

(Button)*buttons[1]->setText("Foo");

投射到按钮失败。

这只是一个简化的例子。数组“按钮”将具有不同类型的对象,因此我需要将其初始化为void,然后在函数内部转换为正确的类型。

1 个答案:

答案 0 :(得分:4)

我认为这是一个简单的优先级错误,您需要

((Button *) buttons[1])->setText("foo");

顺便问一下,你确定这是C吗?这种调用看起来真的像C ++(它可能是C,但在大多数情况下你需要一个明确的this等价物。)