|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.04.2017, 05:02 | #11 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
g++ --std=c++11 g++ --std=c++14 Если вы пользуетесь средой, нада искать в настройках проекта настройку "стандарт" и ее установить/изменить. Список изменений? Вот например книга, по основным новшествам http://shop.oreilly.com/product/0636920033707.do Переводы ищите сами - я ее в оригинале читаю. Но она, предполагает, что вы уже знакомы с исходным стандартом. В книге показаны различия. ...отвечая на исходный вопрос - перечисления, это способ как-то избавится от кучи глобальных названий, т.е. как-то систематизировать и назвать числа(константы). Есть такой термин "магическое число", когда вы читаете код, например: someLongFunction(3,5,7) и вот тут совершенно не ясно, что такое 3-5-7. Во избежание этого применяются именованые константы и дефайны, например #define AMOUNT_OF_BALLS 3 someLongFunction(AMOUNT_OF_BALLS,5, 7) Но это устаревший подход, т.к. слабо контроллируется компилятором. Поэтому придумали enum enum PossibleBallsCount {BALL_3 = 3, BALL_2 = 2}; someLongFunction(BALL_3 ,5,7) Но это тоже плохо работает, потому что по прежнему можно писать число 3 вместо BALL_3. В С++11 ввели enum class PossibleBallsCount {BALL_3 = 3, BALL_2 = 2}; someLongFunction(PossibleBallsCount ::BALL_3 ,5,7) Теперь уже нельзя написать 3 вместо названия, а нужно писать полное имя PossibleBallsCount::BALL_3 т.о. компилятор четка отслеживает верное ли вы название вписали и выдает ошибки. Меньше проблем человеку. Применять enum нужно, когда есть некоторое число вариантов, и нужно указать какой-то, например, пол м/ж, выбор датчика (компас/ускорение/гироскоп) и т.д. При этом, вся остальная программа предполагается одинаковой для любого выбранного элемента. Скажем, если вы делаете чтение датчиков по юсб, то наверняка, каждый будет иметь собственный уникальный протокол. Т.о. энюм в данном случае лиш усложнит - будут тонны условий у вас. Здесь лучше сделать разные классы с одинаковым предком. Палитра цветов с именами (например, 20 цветов) для рисования кнопки - вполне хороший кандидат на enum. Вот этот ваш "изврат" Код:
Код:
В С++11 Код:
Последний раз редактировалось alexzk; 13.04.2017 в 05:37. |
|
13.04.2017, 08:15 | #12 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
В VS без параметров (ну или включены по умолчанию), некоторые фичи С++11 есть с 2010, но в основном с 2012-2013.
Список поддерживаемых фич по версиям VS: https://msdn.microsoft.com/en-us/library/hh567368.aspx Или для всех компиляторов: http://en.cppreference.com/w/cpp/compiler_support Описания изменений много где есть, например по ссылкам выше. Или тут более кратко и на русском: https://ru.wikipedia.org/wiki/C%2B%2B11 Или еще более кратко основные фичи: https://habrahabr.ru/post/182920/ Или Effective Modern C++ Мейерса. (Ну и его же Effective C++ тоже во многом актуальна и рекомендуется к прочтению) http://www.programmersforum.ru/showt...602#post221543 Вряд ли компилируется, скорее всего так Код:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 13.04.2017 в 08:30. |
13.04.2017, 08:34 | #13 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
Код:
Все же думаю, с массивами так не взлетит, собственно для этого и ввели constexpr. Последний раз редактировалось alexzk; 13.04.2017 в 08:38. |
|
13.04.2017, 18:48 | #14 |
Форумчанин
Регистрация: 09.04.2017
Сообщений: 598
|
Спасибо Вам всем. Я пока не такой умный)) У меня VS 2008. Изучаю С++ по книге Р.Лафоре. Там VS вообще я так понял давнишний. Вот закончу изучать основу, тогда и обновления изучу)))
По Лафоре, я так понял имена перечисления имеют значения по умолчанию от 0. Если я хочу задать другие значения, то первому имени назначаю своё значение, а далее по порядку. Тот эпизод с enum который рассматривается в теме "Классы", я так понял применяется в виде такого первоначального значения, а используется как константа. Ведь если я правильно понял концепцию класса, инициализация в классе не делается. Это делают методы и их вид конструкторы. Так? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перечисления. Метод GetValue в цикле. | BadCats | C# (си шарп) | 3 | 06.04.2016 08:18 |
перечисления в связке с циклом (C#) | BadCats | Помощь студентам | 7 | 08.02.2016 18:43 |
Перечисления в CLR проектах | cojuer | Visual C++ | 1 | 30.07.2013 09:45 |
ENUM-перечисления.Вовпрос? | Goody | Общие вопросы C/C++ | 5 | 18.04.2012 01:44 |
Перечисления в классах (С++) | Александр Елис | Помощь студентам | 1 | 22.01.2010 17:10 |