0

このコードを C++ から C# または CLI に変換しようとしていますが、今のところ何も機能しません。誰か助けてください。

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

1 に答える 1

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つの派生型を持ち、それぞれが元の共用体のメンバーの1つを含む抽象基本クラスになります。フィールドが現在有効なユニオンのメンバーをマークするために使用される場合、TokenType各インスタンスの具体的なタイプが同じ情報を簡単に決定するため、そのフィールドは削除される可能性があります。

于 2013-03-10T07:30:30.240 に答える