代码行:RECOG_OBJECTS *pRecogObjects = (RECOG_OBJECTS*)pEvtInst;
我目前正在使用SDK,同时还在学习高级C ++。特别是右手对我来说很难解释。
答案 0 :(得分:1)
它使用强制转换使编译器将pEvtInst重新解释为指向RECOG_OBJECTS的指针。也许,在代码中的那一点,pEvtInst被定义为其他类型的变量。强制转换允许您告诉编译器将变量视为不同类型的变量。
int x = 0x48692100;
printf("Message: %s\n", (char*)&x);
在上面的示例中,即使x
是一个整数,我也将其“转换”为(char*)
,因此它被视为指向字符串的指针,而不是它确实是整数。在这种特殊情况下,如果我正确选择了数字,它应该打印“嗨!”。
答案 1 :(得分:0)
它将pRecogObjects
定义为指向RECOG_OBJECTS
的指针,并将该指针初始化为值(RECOG_OBJECTS*)pEvtInst
。
(RECOG_OBJECTS*)pEvtInst
将pEvtInst
的值转换为指向RECOG_OBJECTS
的指针。这是来自C的显式类型转换(有时称为类型转换)。
效果取决于pEvtInst
实际上是什么(例如,如果它是一个指针,它指向什么)。