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

error C3168: bool: недопустимый базовый тип для перечисляемого типа - C++

Восстановить пароль Регистрация
 
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
02.08.2013, 16:10     error C3168: bool: недопустимый базовый тип для перечисляемого типа #1
В Visual C++ 2005 это не вызывает ошибки. А почему в Visual C++ 2010 ошибка?

C++
1
enum    State:bool{ON=true, OFF=false};  // error C3168: bool: недопустимый базовый тип для перечисляемого типа
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2013, 16:10     error C3168: bool: недопустимый базовый тип для перечисляемого типа
Посмотрите здесь:

C++ union REGS rg; недопустимый неполный тип
C++ typeid определяет тип указателя на базовый класс, как тип "базовый класс". Вне зависимости от присвоенного ему значения
C++ как правильно понять тип bool ? bool true(const string &str) и что дает это значение ?
Недопустимый неполный тип C++
C++ Error C2181: недопустимый else без парного if
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
02.08.2013, 16:11     error C3168: bool: недопустимый базовый тип для перечисляемого типа #2
BigLow, По стандарту С++ указание underlying типа для перечисления допустима только с С++11.
Так что это расширение MSVC.

2005 - http://msdn.microsoft.com/en-us/libr...=vs.80%29.aspx
This can be any scalar type, such as signed or unsigned versions of int, short, or long. bool or char is also allowed.
2010 - http://msdn.microsoft.com/en-us/libr...vs.100%29.aspx
This can be any scalar type, such as signed or unsigned versions of int, short, or long. bool or char is also allowed.
Собственно отличий по версиям нет, так что либо ошибка на MSDN, либо вы что-то делаете не так.
По-хорошему в 2010 студии уже были некоторые фичи С++11, вполне возможно, что это просто недоработка.
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
02.08.2013, 16:31  [ТС]     error C3168: bool: недопустимый базовый тип для перечисляемого типа #3
Не знаю. Мне кажется это дело в самой Visual Studio.

В последнее время она у меня глючит. То подсказки неправильно показывает, то еще другие проблемы возникают.

Буду переустанавливать ее
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
02.08.2013, 16:48     error C3168: bool: недопустимый базовый тип для перечисляемого типа #4
BigLow, А с int-ом или чем-нибудь вроде работает? Или тоже нет?
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
02.08.2013, 16:57  [ТС]     error C3168: bool: недопустимый базовый тип для перечисляемого типа #5
ForEveR, и с int, и с short все прекрасно работает

А в CodeBlocks эта программа компилируется:
C++
1
2
3
4
5
6
7
8
9
10
#include<iostream>
 
enum    State:bool{OFF, ON};
 
 
int main()
{
 
    return 0;
}
Скорее всего дело в Visual Studio
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.08.2013, 18:19     error C3168: bool: недопустимый базовый тип для перечисляемого типа #6
Цитата Сообщение от BigLow Посмотреть сообщение
Скорее всего дело в Visual Studio
VS2010:
warning C4480: nonstandard extension used: specifying underlying type for enum 'State'
IntelliSense: underlying type of enum type must be an integral type other than bool
VS2012: OK
Yandex
Объявления
02.08.2013, 18:19     error C3168: bool: недопустимый базовый тип для перечисляемого типа
Ответ Создать тему
Опции темы

Текущее время: 13:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru