如何创建枚举值数组?我无法摆脱这个错误:
无法将参数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
}
答案 0 :(得分:1)
setDoorState的第一个参数是unsigned short类型的标量值,但是您传递的是数组。这就是编译器告诉你的。我们无法告诉你具体要传递什么,因为我们不知道任何细节,但显然传递数组并不好!
您将返回单个元素result [x],而不是数组结果。您需要分配元素,然后返回数组。
result[x] = (CS_SENSOR_RESULT) (int) d5->setDoorState(...);
return result;
答案 1 :(得分:0)
您尚未为OPERATION_FAILED设置值,并且后面还有逗号。 应该更像是。
enum class CS_SENSOR_RESULT {
OPERATION_PASSED = 0,
OPERATION_FAILED = 1
}
答案 2 :(得分:0)
我将(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);
}
}