2013-10-11 88 views
-1

如何創建枚舉值數組?我無法擺脫這種錯誤的:無法將參數1從'cli :: array <Type> ^'轉換爲'unsigned short'

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

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

您繼續更改問題並使我的答案過時。請不要讓我繼續編輯跟上! –

+0

我把問題推回去了。不要在問題中寫下答案。而寫出與問題無關的答案真的沒有意義! –

回答

0

您沒有設置OPERATION_FAILED一個值,你也有一個逗號後。 它應該更像。

enum class CS_SENSOR_RESULT { 

    OPERATION_PASSED = 0, 

    OPERATION_FAILED = 1 
} 
+0

那沒問題。還有其他問題。 – maszynaz

1

setDoorState的第一個參數是類型爲unsigned short的標量值,但是您傳遞的是數組。這就是編譯器告訴你的。我們不能具體告訴你要傳遞什麼,因爲我們不知道細節,但顯然傳遞數組並不是一件好事!

您正在返回單個元素result [x],而不是數組,結果。您需要分配元素,然後返回數組。

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

d5-> setDoorState()返回C++ SESNOR_RESULT – maszynaz

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); 
    } 
} 
相關問題