如何从NS::Array中获取MTL::Device对象?Metal C++开发问题
解决Metal C++中NS::Array获取MTL::Device的类型不匹配问题
你遇到的错误是因为NS::Array::object()方法返回的是基类NS::Object*,无法直接赋值给派生类MTL::Device*变量,需要显式做类型转换。
推荐使用Metal C++ API提供的安全动态转换方式:
NS::Array* device_array = MTL::CopyAllDevices(); MTL::Device* device = NS::dynamic_cast<MTL::Device*>(device_array->object(0));
NS::dynamic_cast会在类型不匹配时返回nullptr,能避免类型错误导致的运行时问题。
如果你能确定数组内的元素一定是MTL::Device类型,也可以使用静态转换:
MTL::Device* device = static_cast<MTL::Device*>(device_array->object(0));
但这种方式没有类型校验,若实际类型不符会引发未定义行为,谨慎使用。
内容的提问来源于stack exchange,提问作者Nikita Chuguevskiy
相关产品推荐
相关产品推荐

