Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать указатель на перечисление enum 
:(
    Опции темы
stat007
Дата 25.10.2008, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: -2
Всего: -4



Подскажите, как слелать указатель на какой-либо элемент перечисление enum?
PM MAIL   Вверх
mes
Дата 25.10.2008, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(stat007 @  25.10.2008,  19:05 Найти цитируемый пост)
Подскажите, как слелать указатель на какой-либо элемент перечисление enum? 

никак (так как на типы и константы времени компиляции нельзя указать).  можно лишь на переменную.


--------------------
PM MAIL WWW   Вверх
Shooroop
Дата 25.10.2008, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 28.4.2008
Где: Красноярск

Репутация: нет
Всего: 2



Если не секрет зачем?? 
PM MAIL ICQ   Вверх
Lazin
Дата 25.10.2008, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



можно, но обычно используются значения перечислимого типа, а не указатели на них
Код

enum my_enum_type
{
    first,
    second,
    third
};

typedef my_enum_type* my_enum_ptr;

void func(my_enum_ptr p)
{
....
}
...
my_enum_type value = first;

func(&value);


PM MAIL Skype GTalk   Вверх
J0ker
Дата 25.10.2008, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



Цитата(Lazin @  25.10.2008,  19:19 Найти цитируемый пост)
можно, но обычно используются значения перечислимого типа, а не указатели на них

нельзя
так-же как нельзя сделать указатель на любой другой тип - тип это абстракция
можно объявить тип - указатель на тип, и сделать указатель на экземпляр типа
ну я думаю у Lazin'a небольшой мисандерстэндинг получился  smile 


--------------------
user posted image
PM MAIL   Вверх
mes
Дата 25.10.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Lazin @  25.10.2008,  19:19 Найти цитируемый пост)
typedef my_enum_type* my_enum_ptr;

Цитата(stat007 @  25.10.2008,  19:05 Найти цитируемый пост)
указатель на какой-либо элемент перечисления

 smile 

Это сообщение отредактировал(а) mes - 25.10.2008, 20:57


--------------------
PM MAIL WWW   Вверх
stat007
Дата 28.10.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: -2
Всего: -4




ну а всё-таки: можно ли ещё вывести какую-либо константу в main()
например:

enum name{first, second, third};
int main()
{
cin>>name;
name++;
cout<<name;
return 0;
}

чтото типа такого, что бы выдывало пр вводе 0, выдавало second и т.д.
PM MAIL   Вверх
mes
Дата 28.10.2008, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(stat007 @  28.10.2008,  21:06 Найти цитируемый пост)
что бы выдывало пр вводе 0, выдавало second 

нельзя. second не строка, а имя константы/переменой, которая существует только в программном коде.

можно Вам такое нужно :

Код

#include <iostream>

const char * data[] =  {"first", "second", "third" };
int main ()
{
    for (int i=0; i<sizeof(data)/sizeof(char*) ; ++i)  std::cout << data[i]<<std::endl; //исправлено 
    system ("pause");
}



только за границу массива не залезайте..  smile 

Это сообщение отредактировал(а) mes - 29.10.2008, 13:45


--------------------
PM MAIL WWW   Вверх
Shooroop
Дата 28.10.2008, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 28.4.2008
Где: Красноярск

Репутация: нет
Всего: 2



в STL есть ассоциативные списки должны помочь 

PM MAIL ICQ   Вверх
mes
Дата 28.10.2008, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Shooroop @  28.10.2008,  21:33 Найти цитируемый пост)
в STL есть ассоциативные списки должны помочь 

для отражения сплошного множества чисел, на  множество строк достаточно линейного массива..

Это сообщение отредактировал(а) mes - 28.10.2008, 21:47


--------------------
PM MAIL WWW   Вверх
Dov
Дата 28.10.2008, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата
for (int i=0; i<sizeof(data); ++i)...

Цитата(mes @  28.10.2008,  20:19 Найти цитируемый пост)
только за границу массива не залезайте..   

Улыбнуло!!!




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
mes
Дата 29.10.2008, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Dov @  28.10.2008,  23:40 Найти цитируемый пост)

Улыбнуло!!!
Цитата
только за границу массива

фраза про пересечение границы относилась к такой реализации :
Цитата(stat007 @  28.10.2008,  21:06 Найти цитируемый пост)
чтото типа такого, что бы выдывало пр вводе 0, выдавало second 

а не к демонстрации :
Цитата(Dov @  28.10.2008,  23:40 Найти цитируемый пост)
for (int i=0; i<sizeof(data); ++i)...

 smile 


--------------------
PM MAIL WWW   Вверх
J0ker
Дата 29.10.2008, 05:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



Цитата(stat007 @ 28.10.2008,  21:06)
ну а всё-таки: можно ли ещё вывести какую-либо константу в main()
например:

enum name{first, second, third};
int main()
{
cin>>name;
name++;
cout<<name;
return 0;
}

чтото типа такого, что бы выдывало пр вводе 0, выдавало second и т.д.

у вас name - это имя типа


--------------------
user posted image
PM MAIL   Вверх
J0ker
Дата 29.10.2008, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 9
Всего: 14



Цитата(mes @  28.10.2008,  21:19 Найти цитируемый пост)
second не строка, а имя константы/переменой, которая существует только в программном коде

second - это именованная константа, но не переменная - она не представлена в памяти и на нее не может быть получен указатель (в отличии от обычного объекта константы)

Добавлено через 3 минуты и 45 секунд
Цитата(mes @ 29.10.2008,  00:22)
Цитата(Dov @  28.10.2008,  23:40 Найти цитируемый пост)

Улыбнуло!!!
Цитата
только за границу массива

фраза про пересечение границы относилась к такой реализации :
Цитата(stat007 @  28.10.2008,  21:06 Найти цитируемый пост)
чтото типа такого, что бы выдывало пр вводе 0, выдавало second 

а не к демонстрации :
Цитата(Dov @  28.10.2008,  23:40 Найти цитируемый пост)
for (int i=0; i<sizeof(data); ++i)...

 smile

это вам намякивают, что sizeof подставляет размер в байтах, а не в элементах smile 


--------------------
user posted image
PM MAIL   Вверх
Rickert
Дата 29.10.2008, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



enum - Это тот же самый int, просто некоторые его значение проименованы.
Поэтому ваш вопрос звучит примерон так: могу ли я создать ссылку на значение, допустим, 1, переменной типа int ?

Это сообщение отредактировал(а) Rickert - 29.10.2008, 08:14


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1769 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.