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

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

Войти
Регистрация
Восстановить пароль
 
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
#1

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

02.08.2013, 16:10. Просмотров 491. Ответов 5
Метки нет (Все метки)

В 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++ Тип bool
C++ union REGS rg; недопустимый неполный тип
Недопустимый неполный тип C++
C++ тип bool ошибка обработки
C++ Error C2181: недопустимый else без парного if
Разработка программ с использованием перечисляемого типа enum enumiration C++
Error c2181: недопустимый else без парного if C++
Тип BOOL C++
Односвязные списки: недопустимый неполный тип C++
C++ Базовый тип для времени в С++
C++ Error C2181: недопустимый else без парного if, почему?
C++ Недопустимый неполный тип, не могу найти ошибку

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 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
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 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
:)
Эксперт С++
4384 / 3227 / 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: недопустимый базовый тип для перечисляемого типа
Ответ Создать тему
Опции темы

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