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 个派生类型,每个派生类型都包含原始联合的成员之一。如果该TokenType字段用于标记联合的当前有效成员,则该字段可能会被删除,因为每个实例的具体类型将很容易确定相同的信息。

于 2013-03-10T07:30:30.240 回答