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

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

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

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

10.08.2013, 11:04. Просмотров 429. Ответов 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: "&" для константы
Посмотрите здесь:

Помогите пожалуйста "error C2143:" и "error C4430:" C++
error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "fprot" C++
C++ Error C2143: синтаксическая ошибка: отсутствие ";" перед "строка"
C++ error C2143: синтаксическая ошибка: отсутствие ";" перед "using"
error C2664: CWnd::MessageBoxW: невозможно преобразовать параметр 2 из "long" в "LPCTSTR" C++
C++ Выдает ошибку c:\proect\8\8\8.cpp(60): error C2040: ==: "char [20]" отличается по уровням косвенного обращения от "int"
При вызове конструктора ошибка: L "Buffer is too small" & & 0 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
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,962
10.08.2013, 11:26     error C2101: "&" для константы #4
Это примерно то же самое, что и &128.

Добавлено через 19 секунд
Цитата Сообщение от BigLow Посмотреть сообщение
Тут я хочу посчитать разницу адресов между первой и последней константой в перечислении
С какой целью?)
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 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
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,962
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 / 51
Регистрация: 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: "&" для константы
Еще ссылки по теме:

Error C2361: пропуск инициализации "Height" из-за метки "default" C++
C++ Error C2664: RegisterClassW: невозможно преобразовать параметр 1 из "WNDCLASSEX *" в "const WNDCLASSW *"
В чём разница между возвратом "string" и "const string&" & C++
OpenCV C++ vs2010 error C2446: :: нет преобразования "const char *" в "_TCHAR *" C++
Зачем "&" в "ostream& operator<<"? C++

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

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

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