C ++请有人解释这行代码吗?

时间:2016-07-13 17:10:07

标签: c++ sdk

代码行:RECOG_OBJECTS *pRecogObjects = (RECOG_OBJECTS*)pEvtInst;

我目前正在使用SDK,同时还在学习高级C ++。特别是右手对我来说很难解释。

2 个答案:

答案 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*)pEvtInstpEvtInst的值转换为指向RECOG_OBJECTS的指针。这是来自C的显式类型转换(有时称为类型转换)。

效果取决于pEvtInst实际上是什么(例如,如果它是一个指针,它指向什么)。

BTW:使用显式类型转换(又称类型转换)通常不是高级C ++的标志。高级C ++通常涉及使用技术以避免进行此类转换。