45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
1

Visual C++ & enum

15.11.2013, 21:27. Показов 855. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2013, 21:27
Ответы с готовыми решениями:

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

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

Microsoft Visual Studio 2010 && OpenGL
Сделал все по инструкции http://www.liveinternet.ru/tags/%F1%EA%E0%F7%E0%F2%FC+glut32.lib/ ...

Enum или enum class и где его располагать
Для удобства хочу сделать перечисление уровней через enum. Но запутался, как правильно. Просьба...

9
36 / 23 / 10
Регистрация: 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
3652 / 2989 / 828
Регистрация: 25.03.2012
Сообщений: 11,023
Записей в блоге: 1
15.11.2013, 21:41 3
Цитата Сообщение от LuxArt Посмотреть сообщение
//vopros = vopros1; * * * * * // Даже такая штука не скомпилируется
что за бред! почему?
0
45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
15.11.2013, 21:45  [ТС] 4
Урааа! так намного лутше писать прогу с сотней разных енамов
спасибо! (кнопку не нашол)
0
36 / 23 / 10
Регистрация: 14.11.2013
Сообщений: 85
15.11.2013, 21:50 5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
что за бред!
Это не бред, а факт!
0
Каратель
Эксперт С++
6605 / 4024 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
15.11.2013, 22:11 6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
что за бред! почему?
бред это Си-шные енамы
0
3652 / 2989 / 828
Регистрация: 25.03.2012
Сообщений: 11,023
Записей в блоге: 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
В астрале
Эксперт С++
8042 / 4799 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
15.11.2013, 22:23 8
Kuzia domovenok, scoped enums которые были показаны в посте LuxArt. В Си такого конечно же нет, из-за этого возможны коллизии.
0
45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
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
Каратель
Эксперт С++
6605 / 4024 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
15.11.2013, 22:44 10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
бред? а какую ты предлагаешь замену
- дефайнам,
- или константам в классе, например
так вот чтоб не городить этот
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
class gameItem{
public:
* enum gItem{MEDKIT, AMMO, GOLD};
* gItem type;
};
огород и сделали enum class
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2013, 22:44
Помогаю со студенческими работами здесь

VS 2010 Express Edition && (MFC && ATL(WTL)) ???
Здравствуйте Смогу ли я воспользоваться Легально MFC и ATL(WTL) библиатеками в VS 2010 Express...

query='SELECT * FROM resume WHERE ' & ''' & RecSet('place')& ''' & '=' & '''& s_loc &''' & - что не так?
упростил для краткости запрос. в чем ошибка? RecSet - это коннекшн. query='SELECT * FROM resume...

error '80020009' &Icirc;&oslash;&egrave;&aacute;&ecirc;&agrave;. /lalala/profile.asp, line 28
При простейшем и сто раз работавшем скрипте, вылетает ошибка! след. содержания error...

Помогите найти драйвера для pci\ven_8086&DEV_266E&SUBSYS_A002145&REV_05\3&13C0B0C5&0&F2
pci\ven_8086&amp;DEV_266E&amp;SUBSYS_A002145&amp;REV_05\3&amp;13C0B0C5&amp;0&amp;F2 Мультимедиа аудиоконтроллер ...

Мультимедиа контролер PCI\VEN_14F1&DEV_8800&SUBSYS_EA3D14F1&REV_05\4&25700A26&0&3020
Помогите пожалуйста найти драйвер на мультимедиа видеоконтролер ...

Нужен драйвера, код PCI\VEN_1039&DEV_7012&SUBSYS_0C98105B&REV_A0\3&B1BFB68&0&17
всем привет !! уменя нет звука нужен драйвер код...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru