У меня есть следующий код C#, который мне нужно преобразовать в код C++. Я немного искал, как делать C++ Enums с атрибутами и не могу понять это.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;
, и если да, то как бы я называю значения STRUCT с помощью перечисления?
«перечисление с атрибуты "ничего не значит в C++, поэтому вам придется объяснить, что именно вы хотите сделать. –
@PeteBecker Спасибо за ваш ответ. Мне нужно продолжить использование перечисления в C++ для представления основ, таких как Error = 0 и т. Д., Но для ошибки перечисления мне нужно разместить на нем больше атрибутов, из которых я могу получить доступ. В основном Error.PSNNumberName = "0 Error" – bing281