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

[C++] декларация класса со статическим полем - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.12.2011, 07:27     [C++] декларация класса со статическим полем #1
Не сингелтон, а класс со статическим именно полем, а не экземпляром. Как это пишется, я знаю, если у меня будет реальная задача на такое поле, я её решу. Просто сейчас не могу сочинить пример на эту тему, чтоб был и простым, и осмысленным, но не сингелтоновым, а надо сделать именно для примера фрагмент UML диаграммы классов с атрибутом, принадлежащим одновременно всем экземплярам, сингелтон же сюда вроде бы не лезет концептуально, так как на уровне модели у него единственен экземпляр, а не атриубут. Если у кого есть в проекте под рукой, киньте пожалуйста сюда одну декларацию.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2011, 07:27     [C++] декларация класса со статическим полем
Посмотрите здесь:

Беда со статическим полем C++
декларация в классе C++
C++ декларация в классе
Что такое forward декларация функции? C++
Как сделать stl::stack полем класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
08.12.2011, 19:56     [C++] декларация класса со статическим полем #2
Например, класс, объекты которого должны во время работы программы при создании получать уникальный ID. Тогда current_id - статическое поле, которое увеличивается в конструктора. Простейший пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class UniqueID
{
public:
    UniqueID():
    m_id(current_id++)
    {
    }
 
private:
    static unsigned current_id;
 
private:
    unsigned m_id;
};
 
unsigned UniqueID::current_id = 0;
Или вам не то надо было?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
09.12.2011, 06:45  [ТС]     [C++] декларация класса со статическим полем #3
Отличный пример, возможно лучший.
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
09.12.2011, 07:25     [C++] декларация класса со статическим полем #4
silent_1991, скажите пожалуйсте, а это специально так задумано что private: дважды повторяется ? если да то почему?
Bers
Заблокирован
09.12.2011, 07:36     [C++] декларация класса со статическим полем #5
greeezz, читабельность же!
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
09.12.2011, 07:39  [ТС]     [C++] декларация класса со статическим полем #6
Цитата Сообщение от greeezz Посмотреть сообщение
silent_1991, скажите пожалуйсте, а это специально так задумано что private: дважды повторяется ? если да то почему?
Цитата Сообщение от Bers Посмотреть сообщение
greeezz, читабельность же!
Мне всё равно на UML переводить, а там спецификаторы повторяются.
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
09.12.2011, 07:45     [C++] декларация класса со статическим полем #7
Bers,
taras atavin, ну я думал может есть какая-то интересная мега хитрость в связи с этим... мало ли.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
09.12.2011, 14:33     [C++] декларация класса со статическим полем #8
Цитата Сообщение от silent_1991 Посмотреть сообщение
объекты которого должны во время работы программы при создании получать уникальный ID. Тогда current_id - статическое поле, которое увеличивается в конструктора. Простейший пример
На этот же код - счетчик созданных объектов данного типа, ну или счетчик существующих - тогда в деструкторе уменьшать статическую переменную.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.12.2011, 17:54     [C++] декларация класса со статическим полем #9
greeezz, нет, хитростей нет, просто логическое разделение. Все поля складываем под один спецификатор, все статические поля - под другой, все тайпдефы - под третий, все методы - под четвёртый и т.д. При комментировании проще и нагляднее будет прокомментировать, какую группу включает в себя каждый спецификатор.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
09.12.2011, 18:23  [ТС]     [C++] декларация класса со статическим полем #10
silent_1991, с учётом того, что спрашивал именно я, можно группировать по любому признаку и произвольно повторять/не повторять спецификаторы: я сам группирую только по спецификаторам, но при чтении на иной стиль вообще не обращаю внимания. В готовом же виде будет UML, то есть уже другой язык и особенности оформления потеряются при переводе. Могу завтра запостить, во что превратилась предложенная декларация. Кстати, тоже вполне читабельно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2011, 20:21     [C++] декларация класса со статическим полем
Еще ссылки по теме:

Linker error с приватным статическим членом класса C++
C++ Пример класса со статическим членом
C++ Инициализация вектора статическим массивом в конструкторе класса

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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
09.12.2011, 20:21  [ТС]     [C++] декларация класса со статическим полем #11
А нет, уже сегодня:
Изображения
 
Yandex
Объявления
09.12.2011, 20:21     [C++] декларация класса со статическим полем
Ответ Создать тему
Опции темы

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