奇怪的铸造问题

时间:2020-05-29 16:22:43

标签: c++ pointers casting reinterpret-cast

奇怪的铸造问题

为了节省时间,我将直接跳过该问题。

在我的一个返回函数中,我通过使用如下的using语句建立了引用:

示例:using T = int( __thiscall* )( void* );

现在,在此语句中,我有一个返回值,该返回值将返回与返回引用类型指针有关的偏移量:

示例:return ( *reinterpret_cast< T** >( this ) )[0X0]( this );

当我通过using语句使用引用时,该操作将成功返回,并且我的函数将正常工作。但是,当不使用该语句并评估引用本机时,我的编译器将向我抛出一些令牌,表明无法对其进行处理。

我尝试执行的操作示例:return ( *reinterpret_cast< int( __thiscall* )( void* )** >( this ) )[0X0]( this );

有什么我想念的东西吗?或者只是不可能?

1 个答案:

答案 0 :(得分:1)

作为一个纯粹的语法问题,并且没有深入研究为什么为什么,指针对指针对指针对函数的语法是增加{ {1}}个限定词,通常只放置一个:

*

不仅仅是在结尾处加上它们-它适用于类型别名,但不适用于多级指针到函数类型。

相关问题