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

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

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

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

10.08.2013, 11:04. Просмотров 451. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2013, 11:04     error C2101: "&" для константы
Посмотрите здесь:

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

Помогите пожалуйста "error C2143:" и "error C4430:" - C++
Здравствуйте. помогите пожалуйста понять как правильно сделать оъявление вот такой штуки... class bst{ struct et{ et* l; ...

При вызове конструктора ошибка: L "Buffer is too small" & & 0 - C++
Привет. При вызове конструктора вылетает эта ошибка. Student(char *n, char *s, char *p, int y, char *g) { name = new char;...

error C2105: для "++" требуется левостороннее значение - C++
Как правильно записать инкремент для указателя на void? Все варианты перепробовал и ничего не помогает int arr = {1, 2, 3, 4, 5}; ...

Ошибка при компиляции "error C2088: <<: недопустимо для class" - C++
Доброго времени суток :) у меня при компиляции возникает ошибка 1&gt;main.cpp(493): error C2088: &lt;&lt;: недопустимо для class суть в том...

Ошибка "error C2109: для индекса требуется массив или указатель" - C++
Помогите, пожалуйста! Имеется программа: double f4 (double x) { double p,f; double a; int i,j; for(i=1;i&lt;=N;i++) ...

Найти причины и способы исправления ошибки "error C2109: для индекса требуется массив или указатель" - C++
Добрый день! Подскажите пожалуйста, писала программу, но на протяжении всей программы для переменной j выдает ошибку: error C2109: для...

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

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

Не по теме:

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

Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
10.08.2013, 11:40     error C2101: "&" для константы #9
Нет, просто при его использовании подставляется единица. Скорей всего все зависит от реализации, но наверняка Ваш код будет выглядеть как ( &12 - &1 ). Можете воспользоваться материалом этой статьи, что бы узнать количество констант http://www.quizful.net/post/enum-types-c
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2013, 12:17     error C2101: "&" для константы
Еще ссылки по теме:

Ошибка при создании шаблонной функции:"error C2075: temp: для инициализации массива требуются фигурные скобки" - C++
template &lt;typename T&gt; int GnomeSort(T* p, int length) { int i, count; i = 0; count = 0; while(i &lt; length) { if(i...

Почему условие "a && b == 0" не выполняется? - C++
решил вспомнить c++, начал что то писать и непонятка void __fastcall TForm1::Button1Click(TObject *Sender) { int a=0,b=0,s=0; ...

Expression: (L"Buffer is too small" && 0) - C++
Где ошибка и как её исправить? #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; const int Size = 5; struct...

Ошибка : " L Buffer is too small & & 0" - C++
Здравствуйте. У меня возникла странная проблема: в недалеком прошлом рабочая программа начала выдавать ошибку: &quot; L Buffer is too small &amp; &amp;...

невозможно преобразовать параметр 1 из "int" в "int *&" - C++
#include &lt;iostream&gt; using namespace std; void Func1(int *n) { cout &lt;&lt; *n &lt;&lt; &quot; = &quot; &lt;&lt; *n &lt;&lt; endl; } void Func2(int &amp;n) ...


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

Или воспользуйтесь поиском по форуму:
Humanoid
Почетный модератор
9830 / 3828 / 163
Регистрация: 12.06.2008
Сообщений: 11,448
10.08.2013, 12:17     error C2101: "&" для константы #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};
тогда будет неправильно работать.
Yandex
Объявления
10.08.2013, 12:17     error C2101: "&" для константы
Ответ Создать тему
Опции темы

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