C++ 中从 void* 到 struct* 的无效转换

问题描述 投票:0回答:1

我有一个与此实施相关的问题:

struct arg_struct
{
    int low;
    int high;
}*args;

void segmentedSieve(void * arguments)
{
    arg_struct *args =  arguments;
 /****do something******/
}

我想用C++编译程序,因为其中有几个使用C++库的变量...

这里的问题就出在这一行:

arg_struct *args =  arguments;

编译失败,编译器说这是从 void* 到 struct* 的无效转换...你知道如何解决这个问题吗?非常感谢任何帮助..

这是可重现的结果,我使用 C++ 来实现:

struct arg_struct
{
    int low;
    int high;
}*args;

void request_from_someone(void * arguments)
{
    arg_struct *args =  arguments;
 /****do something******/
}

int main(){
/***nothing to see here, just trying to give a compilation error***/

return 0;
}

编译错误:

c++ struct compiler-warnings void
1个回答
0
投票

在 C++ 中,您需要显式从

void*
转换为真正的指针类型:

arg_struct *args = (arg_struct *)arguments;
© www.soinside.com 2019 - 2024. All rights reserved.