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

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

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

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

02.08.2013, 16:10. Просмотров 515. Ответов 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: недопустимый базовый тип для перечисляемого типа
Посмотрите здесь:

typeid определяет тип указателя на базовый класс, как тип "базовый класс". Вне зависимости от присвоенного ему значения - C++
Вот код: #include <iostream> #include <string> #include <conio.h> #include <windows.h> #include <typeinfo> using...

как правильно понять тип bool ? bool true(const string &str) и что дает это значение ? - C++
задам может глупый вопрос, но прошу ответить. как правильно понять тип bool ? bool true(const string &str) и что дает это...

Базовый тип для времени в С++ - C++
Добрый вечер всем! Ребята, подскажите, существует ли в C++ некий базовый тип или возможно классы для определения/задания времени? Что-то...

Разработка программ с использованием перечисляемого типа enum enumiration - C++
Помогите составить программу: Составьте программу на языке C++ Определите перечисляемый тип данных для хранения названий сезонов...

Недопустимый неполный тип - C++
Здравствуйте! Помогите решить проблему с недопустимы полным типом. Код: main.cpp #include "headers.h" #include "support.h" int...

Односвязные списки: недопустимый неполный тип - C++
По книге Седжвика пишу реализацию списков. Есть такие файлы: list.h: #ifndef LIST_H #define LIST_H struct data; struct...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2013, 18:19     error C3168: bool: недопустимый базовый тип для перечисляемого типа
Еще ссылки по теме:

union REGS rg; недопустимый неполный тип - C++
Прерывания с клавиатуры Может я чего не подключил ещё нужного? #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;dos.h&gt; ...

Недопустимый неполный тип, не могу найти ошибку - C++
#include&lt;iostream&gt; #include&lt;locale&gt; #include&lt;string&gt; #include&lt;iomanip&gt; #include&lt;fstream&gt; void Poisk_1(), Poisk_2(), Poisk_3(),...

Error C2181: недопустимый else без парного if - C++
Помогите! Не могу понять в чем ошибка! Стоит задача: Напишите один оператор if, который проверяет две целочисленные переменные и...

Error c2181: недопустимый else без парного if - C++
Помогите, пожалуйста... #include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;locale.h&quot; #include &quot;math.h&quot; int...


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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: недопустимый базовый тип для перечисляемого типа
Ответ Создать тему
Опции темы

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