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

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

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

error C2101: "&" для константы - C++

10.08.2013, 11:04. Просмотров 464. Ответов 9
Метки нет (Все метки)

Почему здесь ошибка?

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
enum Month{JANUARY=1, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER};
 
int main() 
{
    std::cout << (&DECEMBER - &JANUARY) << std::endl;  // error C2101: "&" для константы
 
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2013, 11:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос error C2101: "&" для константы (C++):

For(auto const& val : stime) .cpp(47) : error C2143: синтаксическая ошибка: отсутствие "," перед ":" - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdexcept&gt; #include &lt;locale&gt; #include &lt;cstdlib&gt; #include &lt;string&gt; #include...

Компилятор выдает ошибку: error C2041: недопустимая цифра "8" для основания "8" - C++
Собственно код: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main(){ long double gramm; long double...

Error C2440: return: невозможно преобразовать "const char *" в "const char (&)[6]" - C++
Вроде все правильно а все равно не работает. Подскажите в чем ошибка #include &lt;iostream&gt; template&lt;typename T&gt; inline const T...

Error C2664: Client::First: невозможно преобразовать параметр 1 из "std::queue<_Ty>" в "std::queue<_Ty> &" - C++
barbershop.h: #ifndef __BARBERSHOP_H__ #define __BARBERSHOP_H__ #include &lt;vector&gt; #include &lt;queue&gt; #include &quot;wantshaircut.h&quot; ...

Где ошибка невозможно преобразовать указатель "this" из "const pers" в "pers &" при выводе объектов через cout - C++
Добрый день! Переписал код из книг Лафоре, создание мультимножества из собственных объектов- справочник телефонный, с именем и фамилией. ...

Ошибка при компиляции In function"int main()"; expected ';', before "cin", [Build Error] [main.o] Error 1 - C++
Книга &quot;Основы программирования на C++ том 1&quot;(Стэнли Б.Липпман). Приводится пример кода. #include &lt;iostream&gt; #include &lt;string&gt; using...

9
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
10.08.2013, 11:22 #2
А зачем пытаться сделать ссылку на enum?
0
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
10.08.2013, 11:26  [ТС] #3
Бендерродригез, это не ссылка. Тут я хочу посчитать разницу адресов между первой и последней константой в перечислении
0
0x10
2479 / 1652 / 248
Регистрация: 24.11.2012
Сообщений: 4,095
10.08.2013, 11:26 #4
Это примерно то же самое, что и &128.

Добавлено через 19 секунд
Цитата Сообщение от BigLow Посмотреть сообщение
Тут я хочу посчитать разницу адресов между первой и последней константой в перечислении
С какой целью?)
0
Toshkarik
1143 / 860 / 51
Регистрация: 03.08.2011
Сообщений: 2,390
Завершенные тесты: 1
10.08.2013, 11:29 #5
В enum идет перечисление значений, которые могут принимать объекты этого типа. Они не хранятся нигде отдельно в памяти.
1
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
10.08.2013, 11:29  [ТС] #6
0x10, чтобы узнать сколько элементов в перечислении
0
0x10
2479 / 1652 / 248
Регистрация: 24.11.2012
Сообщений: 4,095
10.08.2013, 11:32 #7
BigLow, В общем случае у нативного перечисления нельзя узнать количество его элементов.
1
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
10.08.2013, 11:33  [ТС] #8
Цитата Сообщение от Toshkarik Посмотреть сообщение
Они не хранятся нигде отдельно в памяти.
т.е. если я пишу enum Month{JANUARY=1, FEBRUARY, MARCH, APRIL ...
то JANUARY нигде не хранится в памяти?

Не по теме:

надо мне еще раз перечитать про эти перечисления. вообще не понимаю

0
Toshkarik
1143 / 860 / 51
Регистрация: 03.08.2011
Сообщений: 2,390
Завершенные тесты: 1
10.08.2013, 11:40 #9
Нет, просто при его использовании подставляется единица. Скорей всего все зависит от реализации, но наверняка Ваш код будет выглядеть как ( &12 - &1 ). Можете воспользоваться материалом этой статьи, что бы узнать количество констант http://www.quizful.net/post/enum-types-c
1
Humanoid
Почетный модератор
9863 / 3762 / 172
Регистрация: 12.06.2008
Сообщений: 11,527
10.08.2013, 12:17 #10
Просто не надо указатели использовать.
C++
1
std::cout << (DECEMBER-JANUARY+1) << std::endl;
Только смысла в этом не вижу... тебе всё равно надо вручную указать последний и первый элемент. Удобно только в том случае, когда между ними могут добавляться новые элементы. А если добавится в конце значение, то придётся уже это новое значение подсовывать в расчёт.
Кстати, такой способ будет работать если значение значения не указаны ни для одного элемента (когда с нуля начинается нумерация), либо указано только для первого (как в твоём случае, когда с единицы начинается нумерация). А вот если сделать так:
C++
1
enum Month{JANUARY=1, FEBRUARY=15, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER};
тогда будет неправильно работать.
1
10.08.2013, 12:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2013, 12:17
Привет! Вот еще темы с ответами:

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

В чём разница между возвратом "string" и "const string&" & - C++
class test { public: test(const string&amp; text) { this-&gt;text = text; } string getText() { return text;

Ошибка "error C2446: :: нет преобразования "int" в "char *" - C++
Ошибка: &quot;error C2446: :: нет преобразования &quot;int&quot; в &quot;char *&quot; Когда нажимаю двойным кликом на ошибку меня перекидывает в файл...

Зачем "&" в "ostream& operator<<"? - C++
Здарова. Я представляю, что такое перегрузка операций, но вот наткнулся на непонятный синтаксис. enum Months{ Jan=1,...


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

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

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