【发布时间】:2019-06-18 08:23:41
【问题描述】:
我有一个我不想更改的静态整数数组。我有一个 C 风格的函数,希望将此数组作为 void 指针参数。我正在尝试 const_cast 和 reinterpret_cast 的不同组合,但我不知道自己到底在做什么,而且它一直给我错误。
class Foo
{
static constexpr int bar[3] = {1,2,3};
void method()
{
cfunction(reinterpret_cast<void*>(const_cast<int*>(&bar)));
}
};
从类型 'const int ()[3]' 到类型 'int' 的无效 const_cast
我看到它失败了,因为类型不匹配。我也试过const_cast<int[]>(bar),但是const_cast想要一个指针或引用类型。
我在哪里可以阅读有关此主题的信息?我很难理解这里发生了什么。
【问题讨论】:
-
老实说,不要那样做。如果你的函数试图改变数组怎么办?如果你不能改变函数,不要让数组为 const
-
@MichaelChourdakis 应该是等价的。
-
@Yastanub 不,第一个是指针,第二个是指针的地址
-
cfunction((int*)bar); -
@MichaelChourdakis 答案部分如下;)
标签: c++