无法将参数 1 从"cli::array<Type> ^"转换为"无符号短整型"

cannot convert parameter 1 from 'cli::array<Type> ^' to 'unsigned short'

本文关键字:Type gt 短整型 无符号 转换 array 参数 cli lt      更新时间:2023-10-16

如何创建枚举值数组?我无法摆脱此错误:

无法将参数 1 从"cli::数组 ^"转换为"无符号" 短'

enum class CS_SENSOR_RESULT {
   OPERATION_PASSED = 0,
    OPERATION_FAILED,
} 
array<CS_SENSOR_RESULT>^ GetResults()
{ 
    array<SENSOR_RESULT>^ result = gcnew array<SENSOR_RESULT>(size);
   return result[x]=(CS_SENSOR_RESULT)(int)d5->setDoorState(fa, door, left, right);  // Here I got error
}

setDoorState 的第一个参数是 unsigned short 类型的标量值,但您正在传递一个数组。这就是编译器告诉你的。我们无法具体告诉您要传递什么,因为我们不知道任何细节,但显然传递数组并不好!

您返回的是单个元素 result[x],而不是数组 result。您需要分配元素,然后返回数组。

result[x] = (CS_SENSOR_RESULT) (int) d5->setDoorState(...);
return result;

(CS_SENSOR_RESULT)(int)(...)更改为static_cast<CS_SENSOR_RESULT>(...)并且它起作用了。以下是完整的代码:

array<CS_SENSOR_RESULT>^ GetResults(int size)
{ 
   array<SENSOR_RESULT>^ result = gcnew array<SENSOR_RESULT>(size);
   for(int x=0;x<size;x++)                 
   {        
        result[x] = gcnew CS_SENSOR_RESULT();
        SENSOR_RESULT doorresult= d5->setDoorState(fa, door, left, right);
        result[x]=static_cast<CS_SENSOR_RESULT>(doorresult);  
   }
}