2013-03-10 58 views
0

我試圖將這段代碼從C++轉換爲C#或CLI,但到現在爲止沒有任何工作,任何人都可以幫助我。如何將聯合C++結構轉換爲C#?

ref struct token_t 
{ 
    TokenTypes_t TokenType;  // enum class 
    string  TokenString;  
    typedef union 
    { 
     Keyword_t KeywordID; // enum class 
     char  CharVal; 
     Operator_t OprID; // enum type 
    }; 
}; 
+0

告訴我們,你試過了什麼,它失敗了嗎?可能有一些使用它們的代碼示例,它似乎失敗了。 – Tuxdude 2013-03-10 10:43:53

回答

2

如果你沒有使用數據在你的程序中是別名的事實,那麼你可以最初只有其他3個字段。

struct token_t 
{ 
    TokenTypes_t TokenType;  // enum class 
    string  TokenString;  
    Keyword_t KeywordID; // enum class 
    char  CharVal; 
    Operator_t OprID; // enum type 
} 

最終翻譯取決於最初的工會需要。通常,抽象基類有(對於這種情況)3種派生類型的結果,每種派生類型包含原始聯合的一個成員。如果TokenType字段用於標記聯合的當前有效成員,那麼該字段可能會被刪除,因爲每個實例的具體類型將平凡地確定相同的信息。

+0

它的一個好主意,但我真的需要保持這個聯盟 – 2013-03-10 07:41:37

+0

+1這個答案。也許你可以通過發佈示例代碼來說明如何以及爲什麼使用C++中的聯合來改善問題,這可能會對我們在C#中做同樣的事情有所幫助。 – perfectionist 2013-03-10 08:36:31