gpt4 book ai didi

c++ - Apple METAL C++ 问题与 MTL::CopyAllDevices();

转载 作者:行者123 更新时间:2023-12-05 04:21:06 28 4
gpt4 key购买 nike

我正在尝试让 C++ 代码与 Metal 一起工作。

我通过调用获得了 MTL:Device 的数组

NS::Array *device_array = MTL::CopyAllDevices();

接下来,我想通过调用获取MTL::Device数组的唯一元素

MTL::Device *device = device_array->object(0);

我得到一个错误:

Cannot initialize a variable of type 'MTL::Device *' with an rvalue of type 'NS::Object *'

问题:

how to get an MTL::Device object from NS::Array?

最佳答案

NS::Array 只包含 NS::Object,它不知道它包含什么,因此默认为 .object(index) 返回 NS::Object*,它是 MTL::Device 的基类,因此不能自动转换。幸运的是 object 是一个模板,所以你可以这样做:

MTL::Device *device = device_array->object<MTL::Device>(0);

检索具有正确类的对象。

请注意,这只是通过 reinterpret_cast 实现的,因此不会检查您是否实际使用了正确的类,因此请谨慎使用!

关于c++ - Apple METAL C++ 问题与 MTL::CopyAllDevices();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74307601/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com