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

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

Восстановить пароль Регистрация
 
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
10.08.2013, 11:04     error C2101: "&" для константы #1
Почему здесь ошибка?

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: "&" для константы
Посмотрите здесь:

C++ error C2040: key: "int [256]" отличается по уровням косвенного обращения от "std::ofstream"
Помогите пожалуйста "error C2143:" и "error C4430:" C++
error C2440: return: невозможно преобразовать "const char *" в "const char (&)[6]" C++
C++ Ошибка при компиляции In function"int main()"; expected ';', before "cin", [Build Error] [main.o] Error 1
Error C2678: бинарный "<<": не найден оператор, принимающий левый операнд типа "std::ifstream" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
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
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
10.08.2013, 11:26     error C2101: "&" для константы #4
Это примерно то же самое, что и &128.

Добавлено через 19 секунд
Цитата Сообщение от BigLow Посмотреть сообщение
Тут я хочу посчитать разницу адресов между первой и последней константой в перечислении
С какой целью?)
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 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
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
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
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 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: "&" для константы
Еще ссылки по теме:

C++ Компилятор выдает ошибку: error C2041: недопустимая цифра "8" для основания "8"
В чём разница между возвратом "string" и "const string&" & C++
Error C2664: Client::First: невозможно преобразовать параметр 1 из "std::queue<_Ty>" в "std::queue<_Ty> &" C++

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

Или воспользуйтесь поиском по форуму:
Humanoid
Почетный модератор
 Аватар для Humanoid
9697 / 3747 / 140
Регистрация: 12.06.2008
Сообщений: 11,301
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: "&" для константы
Ответ Создать тему
Опции темы

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