Я видел результаты потоков на протяжении многих лет о том, как вы могли бы обернуть перечисление или шаблон класса с перечислением, чтобы добавить функциональность добавления. У меня есть перечисление. Я хочу иметь возможность создать объект класса вокруг класса Enum, чтобы я мог < /p>
конвертировать в строку < /li>
Входное значение конкретное информация < /li>
< /ul>
Простой способ сделать это < /p>
< /ul>
Простой способ сделать < /p>
< /ul>
< /p>
< /ul>
< /p> < /br /> < /ul>
.
enum class color : uint16_t {
unknown = 0,
red,
green,
blue,
};
class colorClass {
public:
colorClass(){ val = color::unknown; }
colorClass(color v)
:val(v)
{}
//copy, move, assignment ctors section
bool isRed(){ return val == color::red; }
// more such functions
std::string toString() {
using enum color;
switch (val) {
case red : return "red";
case blue: return "blue";
case green: return "green";
case unknown: [[fallthrough]];
default: return "unknown";
}
}
private:
color val;
};
< /code>
Это работает просто отлично. Теперь, если я хочу ограничить этот класс еще немного, я могу использовать шаблон и концепции < /p>
enum class color : uint16_t {
unknown = 0
red,
green,
blue,
};
template
concept ValidColor = std::is_enum_v;
template
class colorClass {
// Pretty much the same implementation?
};
< /code>
Моя память немного нечеткая, но я думаю, что я видел некоторые умные реализации для ToString, используя базовый тип. Я не хочу использовать каких -либо сторонних либеров. Помимо обеспечения использования перевода, придает ли добавление шаблона какие -либо преимущества?>
Подробнее здесь: https://stackoverflow.com/questions/786 ... functional
C ++ 20 и более новее - Как лучше всего реализовать «перечисление с большей функциональностью»? ⇐ C++
Программы на C++. Форум разработчиков
1749217389
Anonymous
Я видел результаты потоков на протяжении многих лет о том, как вы могли бы обернуть перечисление или шаблон класса с перечислением, чтобы добавить функциональность добавления. У меня есть перечисление. Я хочу иметь возможность создать объект класса вокруг класса Enum, чтобы я мог < /p>
конвертировать в строку < /li>
Входное значение конкретное информация < /li>
< /ul>
Простой способ сделать это < /p>
< /ul>
Простой способ сделать < /p>
< /ul>
< /p>
< /ul>
< /p> < /br /> < /ul>
.
enum class color : uint16_t {
unknown = 0,
red,
green,
blue,
};
class colorClass {
public:
colorClass(){ val = color::unknown; }
colorClass(color v)
:val(v)
{}
//copy, move, assignment ctors section
bool isRed(){ return val == color::red; }
// more such functions
std::string toString() {
using enum color;
switch (val) {
case red : return "red";
case blue: return "blue";
case green: return "green";
case unknown: [[fallthrough]];
default: return "unknown";
}
}
private:
color val;
};
< /code>
Это работает просто отлично. Теперь, если я хочу ограничить этот класс еще немного, я могу использовать шаблон и концепции < /p>
enum class color : uint16_t {
unknown = 0
red,
green,
blue,
};
template
concept ValidColor = std::is_enum_v;
template
class colorClass {
// Pretty much the same implementation?
};
< /code>
Моя память немного нечеткая, но я думаю, что я видел некоторые умные реализации для ToString, используя базовый тип. Я не хочу использовать каких -либо сторонних либеров. Помимо обеспечения использования перевода, придает ли добавление шаблона какие -либо преимущества?>
Подробнее здесь: [url]https://stackoverflow.com/questions/78635297/c20-and-newer-whats-the-best-way-to-implement-an-enum-with-more-functional[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия