Форум программистов, компьютерный форум, киберфорум
Наши страницы

Перечисление для дурака - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как подключить mingv к Sublime Text 2? http://www.cyberforum.ru/cpp-beginners/thread639570.html
Как подключить mingv к Sublime Text 2? Из командной строки mingv работает, значит в путях есть. Что и где нужно прописать в Sublime Text 2? Google не рулит.
C++ Приложение падает на другом компе ОС Ubuntu-64 linux. Написал, отладил и скомпилировал приложение на домашнем ноутбуке. Приношу на работу (там тоже Ubuntu-64) готовый скомпилированный файл, запускаю и спустя некоторое время... http://www.cyberforum.ru/cpp-beginners/thread639566.html
C++ Несколько действий одновременно
Мне нужно чтобы во во время работы программа одновременно делала несколько действий.. Подскажите какую функцию нужно для этого использовать и как???
Анти вредоносные программе в игре C++
Как сделать скрипт проверки на программу ,то есть игрок входит в игру и включает её ,она принимает какие либо меры . Вот сома программа ,она напоминает вирус .
C++ Количество строк в файле http://www.cyberforum.ru/cpp-beginners/thread639523.html
Вот написал простенькую программу для подсчета строк в файл все работает но мучают сомнения почему везде где я бы не читал все делают по другому. Вот сама программа: #include <iostream> #include...
C++ Задача из Bjarne Stroustrup (Глава 12,7 №2)Графическая линия в консоли(в стиле ASCII) Глава 12,7 №2. Implement a simple graphics system using whatever graphics facilities are available on your system (if you don’t have a good graphics system or have no experience with one, you might... подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
19.08.2012, 11:53
Чтоб и коротко/быстро и нормально — никак. enum в Си++ не может итерироваться. Остаётся три пути:

1. +1 и приводить типы (можно спрятать
вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
 
class Card {
public:
    enum Suit  { HEARTS, CLUBS, DIAMONDS, ACES };
    enum Value { SIX = 6, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE };
    // ...
};
 
Card::Value& operator++(Card::Value &value)
{
  value = static_cast<Card::Value>(static_cast<int>(value) + 1);
  return value;
}
 
Card::Value operator++(Card::Value &value, int)
{
  Card::Value old_value = value;
  value = static_cast<Card::Value>(static_cast<int>(value) + 1);
  return old_value;
}
 
int main()
{
  for (Card::Value i = Card::SIX; i <= Card::ACE; ++i) {
    std::cout << i << std::endl;
  } 
}
, но сути это меняет).
2. Энтерпрайз-стайл-решение — свой класс Enum с преферансом и блудницами.
3. Запихнуть энумы в вектор:
C++
1
2
3
4
5
6
7
8
9
10
11
12
class Card {
public:
  enum Value { SIX = 6, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE };
  // ...
  static const std::vector<Value>& getValueList() { return values; }
  // ...
private:
  static std::vector<Value> values;
};
 
// C++11 фишка, к сожалению. Для неподдерживающих придётся городить костыли.
std::vector<Card::Value> Card::values({ SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE });
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru