【发布时间】:2016-08-04 20:27:50
【问题描述】:
我有以下 C# 代码,我需要将其转换为 C++ 代码。我已经搜索了一些关于如何使用属性进行 C++ 枚举的内容,但无法弄清楚。
基本上,我需要一种方法来用 C++ 表示以下简化的 C# 代码,该代码将使用属性进行枚举。
C#代码:
public class PSMNameAttribute : Attribute
{
public string PSMName;
public PSMNameAttribute(string _PSMName) { PSMName = _PSMName; }
}
public class PSMNumberAttribute : Attribute
{
public string PSMNumber;
public PSMNumberAttribute(string _PSMNumber) { PSMNumber = _PSMNumber; }
}
public class PSMNumberNameAttribute : Attribute
{
public string PSMNumberName;
public PSMNumberNameAttribute(string _PSMNumberName) { PSMNumberName = _PSMNumberName; }
}
public enum ShippingMethodsTypes
{
[PSMName("ErrorScriptMed")]
[PSMNumber("-5")]
[PSMNumberName("-5 ErrorScriptMed")]
ErrorScriptMed = -5
,
[PSMName("SpecialHandling")]
[PSMNumber("-1")]
[PSMNumberName("-1 SpecialHandling")]
SpecialHandling = -1
,
[PSMName("Error")]
[PSMNumber("0")]
[PSMNumberName("0 Error")]
Error = 0
}
可以这样做吗:
enum Category{
unknown = -1, meat, poultry, seafood, dairy, vegetable,fruit, grain, sweet
};
typedef struct {
float calories; // calories
float carbonhydrates; // grams
float fat; // grams
float cholesterol; // grams
float sodium; // grams
float protein; // grams
Category category ;
}Food;
如果是这样,我将如何使用枚举调用结构值?
【问题讨论】:
-
“带属性的枚举”在 C++ 中没有任何意义,所以你必须解释你想要做什么。
-
@PeteBecker 感谢您的回复。我需要继续在 C++ 中使用枚举来表示基本知识,例如 Error = 0 等等,但是对于枚举错误,我需要在其上放置更多我可以从中访问的属性。基本上 Error.PSNNumberName = "0 错误"
标签: c++ enums attributes enumeration