首页 > 解决方案 > 转换对象的地址

问题描述

如果没有其他变量,我将如何通过它的地址传递它?

(VkSurfaceKHR)surface.get()

我不能这样做:

&(VkSurfaceKHR)surface.get() /*or*/ &((VkSurfaceKHR)surface.get())

标签: c++

解决方案


问题是,这(VkSurfaceKHR) surface.get()将创建一个新的临时VkSurfaceKHR对象(又名右值),它只在表达式的持续时间内存在。

正如编译器正确地告诉您的那样,您不能获取右值的地址,而是需要一个左值,即一个命名变量。

如果surface.get()返回多态类型的引用类型并且实际的底层对象恰好是VkSurfaceKHR,您可以使用dynamic_cast<VkSurfaceKHR&>获取正确类型的引用,然后获取该引用的地址。


推荐阅读