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

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

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

Visual C++ & enum - C++

15.11.2013, 21:27. Просмотров 343. Ответов 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?";
есть ли способ чтоб такая ерунда не компилировалась?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2013, 21:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Visual C++ & enum (C++):

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

Ошибка: multiple definition of `void std::swap<A>(A&amp;, A&amp;) - C++
Хочу специализировать swap для своего класса. Получаю ошибку. Вот код:#ifndef A_H #define A_H #include &lt;string&gt; class A { ...

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

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration? - C++
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

Enum == int !=enum? - C++
enum Flags{ Flag1 = 1, Flag2 = 2}; int main() { Flags a = Flag1, b = Flag2; a = a | b; } error C2440: =: невозможно...

В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура x*x+y*y<25&&x*x+y*y>=9& - C++
В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
LuxArt
34 / 21 / 2
Регистрация: 14.11.2013
Сообщений: 85
15.11.2013, 21:32 #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;
}
1
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
15.11.2013, 21:41 #3
Цитата Сообщение от LuxArt Посмотреть сообщение
//vopros = vopros1; * * * * * // Даже такая штука не скомпилируется
что за бред! почему?
0
nefton
44 / 20 / 5
Регистрация: 28.02.2013
Сообщений: 189
15.11.2013, 21:45  [ТС] #4
Урааа! так намного лутше писать прогу с сотней разных енамов
спасибо! (кнопку не нашол)
0
LuxArt
34 / 21 / 2
Регистрация: 14.11.2013
Сообщений: 85
15.11.2013, 21:50 #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
что за бред!
Это не бред, а факт!
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.11.2013, 22:11 #6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
что за бред! почему?
бред это Си-шные енамы
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
15.11.2013, 22:13 #7
Цитата Сообщение от Jupiter Посмотреть сообщение
бред это Си-шные енамы
бред? а какую ты предлагаешь замену
- дефайнам,
- или константам в классе, например
C++
1
2
3
4
5
class gameItem{
public:
  enum gItem{MEDKIT, AMMO, GOLD};
  gItem type;
};
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
15.11.2013, 22:23 #8
Kuzia domovenok, scoped enums которые были показаны в посте LuxArt. В Си такого конечно же нет, из-за этого возможны коллизии.
0
nefton
44 / 20 / 5
Регистрация: 28.02.2013
Сообщений: 189
15.11.2013, 22:25  [ТС] #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;
}
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.11.2013, 22:44 #10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
бред? а какую ты предлагаешь замену
- дефайнам,
- или константам в классе, например
так вот чтоб не городить этот
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
class gameItem{
public:
* enum gItem{MEDKIT, AMMO, GOLD};
* gItem type;
};
огород и сделали enum class
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2013, 22:44
Привет! Вот еще темы с ответами:

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? - C++
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt; setw(5) &lt;&lt; ptr; // вывод элементов...

Порядок вычисления: операторы «|» и «||», «&» и «&&» - C++
В Java булевые операторы «|» и «||», и «&amp;» и «&amp;&amp;» отличаются друг от друга порядком вычеслений, а в C++ так же как и в Java или...

Friend ostream& operator<<(ostream& stream, CArr& obj); - C++
CArr.h #pragma once class CArr{ int* arr = nullptr; int size = 10; void swap(int *a, int *b); void swap(int &amp;a, int &amp;b); ...

Visual C++ & Borland C++ - C++
Я хочу перейти с Borland C++ на Visual C++! И хочу узнать, сильно ли они от друг друга отличаются, есть ли в Visual C++ тип AnsiString?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.11.2013, 22:44
Ответ Создать тему
Опции темы

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