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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Теоретический вопрос по enum 
V
    Опции темы
Mephisto
Дата 1.10.2010, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

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



Зачем нужна такая форма записи в определении класса:
Код

class SomeClass {
...
private:
    enum { MaxRecentFiles = 5 }; 

    QAction * recentFileActions[MaxRecentFiles]; 
};


В чем преимущество перед обычной константой, или макроподстановкой?
PM   Вверх
mes
Дата 1.10.2010, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



для данного случая enum является альтернативой будущего constexpr..
погуглите на тему последнего..
к тому же  static const  определенная внутри класса может потребовать внешнего определения
да и поведение отличается на разных компиляторах..

ну а  макроподстановка игнорирует области видимости (и т.д.), что ведет к конфликтам имен..



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


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


Дикий Кот. =^.^=
****
Награды: 1



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

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



[offtopic]Как сказал Владимир Вольфович, "Лужков должен висеть в центре Москвы" smile Страуструпа я предлагаю расстрелять прилюдно. smile [/offtopic]


--------------------
PM MAIL WWW GTalk Jabber   Вверх
mes
Дата 1.10.2010, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(kemiisto @  1.10.2010,  12:56 Найти цитируемый пост)
Страуструпа я предлагаю расстрелять прилюдно. 

ну то что Вы ему приговор вынесли уже давно, это я в курсе.. но что именно послужило поводом озвучить его еще раз в этой теме ? 


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


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


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Давайте лучше растерзаем Вирта?


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mes
Дата 1.10.2010, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(djamshud @  1.10.2010,  13:00 Найти цитируемый пост)
Давайте лучше растерзаем Вирта? 

чтоб почитатели записали его  в великомученики ?
пусть сначала заслужит ))



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


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



BOOST_STATIC_CONSTANT() в руки ;)
PM WWW   Вверх
djamshud
Дата 1.10.2010, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Да скольких он уже замучал своими алголами, модулами и прочими оберонами? С этим пора что-то решатьsmile

Это сообщение отредактировал(а) djamshud - 1.10.2010, 14:23


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Mephisto
Дата 1.10.2010, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

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



Цитата(mes @  1.10.2010,  14:50 Найти цитируемый пост)
к тому же  static const  определенная внутри класса может потребовать внешнего определения

А вот тут можно подробней?  smile 
PM   Вверх
mes
Дата 1.10.2010, 19:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Mephisto @  1.10.2010,  17:48 Найти цитируемый пост)
А вот тут можно подробней? 

Код

struct A {
 static const int value =5;
 enum { evalue = 6 };
};

void f (const int& i)
{
     std::cout << i;
}
int main () {
//  f ( A::value  ); 
   f ( A::evalue ); 
}

попробуйте расскоментировать

еще использование константы для задания это нагружение логики и вынужденный обходной маневр компилятора..
как видно в примере
Код

struct A {
 static const int value =5;
};
extern const int extval;
const int get_size () { return A::value; }

int main () {

 int arr  [A::value];
// int arr1 [get_size ()];
// int arr2 [extval];
}
extern const int extval =7;
}

не каждой константой можно задать размер массива..
т.е фактически определяя константу, Вы определяете еще нечто, которое и подставляется в местах использования константы..
грубо говоря для логики это выглядит так :
Код

struct A {

 static const int value  = 5;   constexpr __value    = 5;
 int array [ /*value*/__value ];
};



Это сообщение отредактировал(а) mes - 1.10.2010, 19:53


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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