在此c ++代码中,可以有人解释下一行在做什么,以前我没有看过这种表示法。
some_struct* args1 = (some_struct*)args2
一个简化的示例是:
struct some_struct
{
myClass1* thisClass1;
};
void function1(void *args2)
{
some_struct* args1 = (some_struct*)args2;
//do some more stuff
}
int Main(int argc, char* argv)
{
mainClass1=myClass1::new()
some_struct args2;
args2.thisClass1=mainClass1;
function1((void *)&args2);
return 0;
}
原谅我的语法,我通常使用Python编程。
最佳答案
在函数中,变量args2
是通用指针,这意味着它可以指向任何内容,但是您不能直接使用它,因为没有与void
相关的类型信息。表达式(some_struct*)args2
告诉编译器假装args2
是指向some_struct
的指针。
这种类型的表达式称为强制类型表达式,因为它可以将一种类型“转换”为另一种类型。语法是C样式的强制转换,它是从C语言的根源继承于C ++。
C样式转换的C ++特定等效项是reinterpret_cast
,例如
some_struct* args1 = reinterpret_cast<some_struct*>(args2);