c++ - 转换对象的地址
问题描述
如果没有其他变量,我将如何通过它的地址传递它?
(VkSurfaceKHR)surface.get()
我不能这样做:
&(VkSurfaceKHR)surface.get() /*or*/ &((VkSurfaceKHR)surface.get())
解决方案
问题是,这(VkSurfaceKHR) surface.get()
将创建一个新的临时VkSurfaceKHR
对象(又名右值),它只在表达式的持续时间内存在。
正如编译器正确地告诉您的那样,您不能获取右值的地址,而是需要一个左值,即一个命名变量。
如果surface.get()
返回多态类型的引用类型并且实际的底层对象恰好是VkSurfaceKHR
,您可以使用dynamic_cast<VkSurfaceKHR&>
获取正确类型的引用,然后获取该引用的地址。
推荐阅读
- javascript - 调整传单中标记的大小,但在角度中保持相同的中心点
- python - 尝试对其中包含逗号的字符串进行舍入 [python]
- android - 为纵向模式设计的android应用程序在恢复时以横向显示
- rust - 是否可以为由所有实现该特征的类型组成的任何元组自动实现特征?
- javascript - 执行捆绑时使用相应子包的模块
- mysql - 插入新行后事件无法正常工作
- flutter - 如何在每次点击时播放相同的 Flare 动画?
- java - 如何在junit测试中跳过从抽象类调用超级方法?
- c# - 将网络浏览器控件和工具条放在用户控件中...无法从主窗体控制它们
- html - 针对同一父级中特定元素的第一个子级