【问题标题】:cannot convert parameter 1 from 'cli::array<Type> ^' to 'unsigned short'无法将参数 1 从 'cli::array<Type> ^' 转换为 'unsigned short'
【发布时间】:2013-10-11 06:29:46
【问题描述】:

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

无法将参数 1 从 'cli::array ^' 转换为 'unsigned 短'

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
}

【问题讨论】:

  • 你不断地改变问题,让我的回答过时了。请不要让我继续编辑以跟上!
  • 我回滚了这个问题。不要在问题中写答案。写与问题无关的答案真的没有意义!

标签: c++ arrays enums command-line-interface


【解决方案1】:

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

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

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

【讨论】:

  • d5->setDoorState() 返回 C++ SESNOR_RESULT
【解决方案2】:

我将 (CS_SENSOR_RESULT)(int)(...) 更改为 static_cast&lt;CS_SENSOR_RESULT&gt;(...) 并且它起作用了。完整代码如下:

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);  
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    相关资源
    最近更新 更多