Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nefton
44 / 20 / 5
Регистрация: 28.02.2013
Сообщений: 188
#1

Visual C++ & enum - C++

15.11.2013, 21:27. Просмотров 336. Ответов 9
Метки нет (Все метки)

Проблема в том что мой компилятор считает нормальным следующий код:
C++
1
2
3
4
5
6
typedef enum {otvet1, otvet2, otvet3} otvet_type;
typedef enum {vopros1, vopros2, vopros3} vopros_type;
 
vopros_type vopros;
 
vopros = otvet1; //?????????????????????
Я понимаю что енам после компиляции в машинных командах просто целое число.
Но компилятор то может догадаться что это не нормально?

Даже предупреждений никаких не выдаёт.

Добавлено через 13 минут
ошибся, присвоение выдаёт ошибку, и на этом спасибо.

не выдаёт ошибку при сравнении
C++
1
if (vopros == otvet1) cout<<"what this?";
есть ли способ чтоб такая ерунда не компилировалась?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2013, 21:27     Visual C++ & enum
Посмотрите здесь:

Nested classes && enum declaration - C++
Добрый вечер, вопрос больше наверно с тем холливаров: зачем использовать вложенные классы и enum class'es, если можно их вынести в...

Visual C++ & Hello world - C++
Вот поставил Visual C++ 2005 Пишу: #include &quot;stdafx.h&quot; #include &lt;iostream.h&gt; int _tmain(int argc, _TCHAR* argv) ...

Напишите цикл, эквивалентный приведенному выше циклу, не пользуясь операторами && и || - C++
Напишите цикл, эквивалентный приведенному выше fоr-циклу, не пользуясь операторами &amp;&amp; и ||. Под приведенным выше fоr-циклом...

Изменение формата данных && работа с файлом - C++
Вечер добрый, форумчане! Вопрос следующий: каким образом данные, считанные из файла (они, я так понимаю, в текстовом формате)...

Указатели(Какую роль выполняют &* и *&) - C++
Всем доброго вечера. Возникла проблема. Помогите решить ее. Какую роль выполняют &amp;* и *&amp; . Если возможно приведите примеры пожалуйста...

[struct tm] или нестыковка в C89 & C++98 & C++11? - C++
http://www.cplusplus.com/reference/ctime/tm/?kw=tm Здесь в С++11 в поле tm_sec количество секунд в минуте как и нужно: 61сек. Но во...

Где используются логические операторы && и || - C++
Скажите пожалуйста а логические операторы такие как и &amp;&amp;, или ||,не !,можно использовать только в операторах ветвления if else,циклах...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LuxArt
33 / 20 / 2
Регистрация: 14.11.2013
Сообщений: 85
15.11.2013, 21:32     Visual C++ & enum #2
Цитата Сообщение от nefton Посмотреть сообщение
есть ли способ чтоб такая ерунда не компилировалась?
Есть! Юзайте стандарт C++ 11

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
enum class otveti  {otvet1, otvet2, otvet3};
enum class voprosi {vopros1, vopros2, vopros3};
 
// =============================================================
// main
int main()
{
    voprosi vopros;
 
    //vopros = vopros1;           // Даже такая штука не скомпилируется
    vopros = voprosi::vopros1;   // А так все OK!
 
 
    return 0;
}
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
15.11.2013, 21:41     Visual C++ & enum #3
Цитата Сообщение от LuxArt Посмотреть сообщение
//vopros = vopros1; * * * * * // Даже такая штука не скомпилируется
что за бред! почему?
nefton
44 / 20 / 5
Регистрация: 28.02.2013
Сообщений: 188
15.11.2013, 21:45  [ТС]     Visual C++ & enum #4
Урааа! так намного лутше писать прогу с сотней разных енамов
спасибо! (кнопку не нашол)
LuxArt
33 / 20 / 2
Регистрация: 14.11.2013
Сообщений: 85
15.11.2013, 21:50     Visual C++ & enum #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
что за бред!
Это не бред, а факт!
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.11.2013, 22:11     Visual C++ & enum #6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
что за бред! почему?
бред это Си-шные енамы
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
15.11.2013, 22:13     Visual C++ & enum #7
Цитата Сообщение от Jupiter Посмотреть сообщение
бред это Си-шные енамы
бред? а какую ты предлагаешь замену
- дефайнам,
- или константам в классе, например
C++
1
2
3
4
5
class gameItem{
public:
  enum gItem{MEDKIT, AMMO, GOLD};
  gItem type;
};
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
15.11.2013, 22:23     Visual C++ & enum #8
Kuzia domovenok, scoped enums которые были показаны в посте LuxArt. В Си такого конечно же нет, из-за этого возможны коллизии.
nefton
44 / 20 / 5
Регистрация: 28.02.2013
Сообщений: 188
15.11.2013, 22:25  [ТС]     Visual C++ & enum #9
Когда следующий стандарт выходит? )))))))))))

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
#include <iostream>
 
using namespace std;
     
enum class otveti {otvet1, otvet2, otvet3};
enum class voprosi {vopros1, vopros2, vopros3};
 
int main(){
    cout<<"Start program"<<endl;
 
    voprosi vopros = voprosi::vopros1;
    otveti otvet;
 
    //if (vopros == otveti::otvet1) cout<<"what this?"; Уже лутше
 
    switch (vopros){
 
    case otveti::otvet1:
        cout<<"Ha ha, wait for next C++ standart???";
    }
 
 
    int g;
    cin>>g;
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2013, 22:44     Visual C++ & enum
Еще ссылки по теме:

Очистка потока ввода && строки - C++
как вобще грамотно очистить поток после ввода множества всяких вещей с клавиатуры? если совсем не чистить то остаются нажатия клавиши...

Классы && С++ Отложение объявление на потом - C++
У меня есть базовый класс (StudentDataBase) который я в дальнейшем хочу наследовать, но тут идёт привязка к Student fmog, как я могу...

Чем оператор || отличается от оператора && ? - C++
Приведите простые примеры, никак до мозгов не доходит)

Логические операции (Логические &&, ||) (Побитовые &, |) - C++
Здравствуйте! Имеется вопрос. К примеру, когда пишут вот так : ... if(i&gt;5 &amp;&amp; j&gt;5) ... if(i&gt;5 || j&gt;5) ... Тут все понятно, в...

Оператор if и логическая операция И (AND) && - C++
Вод подскажите что будет быстрей обрабатываться процессором: if(!a&amp;&amp;!b) { a+b; } или


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.11.2013, 22:44     Visual C++ & enum #10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
бред? а какую ты предлагаешь замену
- дефайнам,
- или константам в классе, например
так вот чтоб не городить этот
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
class gameItem{
public:
* enum gItem{MEDKIT, AMMO, GOLD};
* gItem type;
};
огород и сделали enum class
Yandex
Объявления
15.11.2013, 22:44     Visual C++ & enum
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru