С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
#1

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

08.12.2011, 07:27. Просмотров 1683. Ответов 10
Метки нет (Все метки)

Не сингелтон, а класс со статическим именно полем, а не экземпляром. Как это пишется, я знаю, если у меня будет реальная задача на такое поле, я её решу. Просто сейчас не могу сочинить пример на эту тему, чтоб был и простым, и осмысленным, но не сингелтоновым, а надо сделать именно для примера фрагмент UML диаграммы классов с атрибутом, принадлежащим одновременно всем экземплярам, сингелтон же сюда вроде бы не лезет концептуально, так как на уровне модели у него единственен экземпляр, а не атриубут. Если у кого есть в проекте под рукой, киньте пожалуйста сюда одну декларацию.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2011, 07:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Декларация класса со статическим полем (C++):

Работа со статическим полем класса - C++
Добрый вечер. Подскажите, как добавить в вектор какое-либо значение в этом случае? Ошибка 2001 вылазит, неразрешенный внешний символ... ...

Undefined reference при работе с статическим полем класса - C++
Здравствуйте. Вот пример: class A { public: A(); A(const A&); ~A();

Беда со статическим полем - C++
Всем привет! такой вопрос: #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <conio.h> #include...

Декларация класса полинома - C++
Как лучше задекларировать класс полинома n-ного порядка от m различных x с мультипликативными членами суммарной степени <=n? Например, при...

Пример класса со статическим членом - C++
Привести пример со статическим членом класса и примеры доступа к нему.

Создание объекта класса с полем являющимся объектом другого класса - C++
Bill a; cin>>a;//тут я ввел с помощью перегруженного оператора ElementSpiska c; //поля у Spiska(Bill A,int,string,int) ...

10
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
08.12.2011, 19:56 #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;
Или вам не то надо было?
1
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
09.12.2011, 06:45  [ТС] #3
Отличный пример, возможно лучший.
0
greeezz
274 / 167 / 4
Регистрация: 10.07.2011
Сообщений: 441
09.12.2011, 07:25 #4
silent_1991, скажите пожалуйсте, а это специально так задумано что private: дважды повторяется ? если да то почему?
0
Bers
Заблокирован
09.12.2011, 07:36 #5
greeezz, читабельность же!
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
09.12.2011, 07:39  [ТС] #6
Цитата Сообщение от greeezz Посмотреть сообщение
silent_1991, скажите пожалуйсте, а это специально так задумано что private: дважды повторяется ? если да то почему?
Цитата Сообщение от Bers Посмотреть сообщение
greeezz, читабельность же!
Мне всё равно на UML переводить, а там спецификаторы повторяются.
0
greeezz
274 / 167 / 4
Регистрация: 10.07.2011
Сообщений: 441
09.12.2011, 07:45 #7
Bers,
taras atavin, ну я думал может есть какая-то интересная мега хитрость в связи с этим... мало ли.
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
09.12.2011, 14:33 #8
Цитата Сообщение от silent_1991 Посмотреть сообщение
объекты которого должны во время работы программы при создании получать уникальный ID. Тогда current_id - статическое поле, которое увеличивается в конструктора. Простейший пример
На этот же код - счетчик созданных объектов данного типа, ну или счетчик существующих - тогда в деструкторе уменьшать статическую переменную.
1
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
09.12.2011, 17:54 #9
greeezz, нет, хитростей нет, просто логическое разделение. Все поля складываем под один спецификатор, все статические поля - под другой, все тайпдефы - под третий, все методы - под четвёртый и т.д. При комментировании проще и нагляднее будет прокомментировать, какую группу включает в себя каждый спецификатор.
1
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
09.12.2011, 18:23  [ТС] #10
silent_1991, с учётом того, что спрашивал именно я, можно группировать по любому признаку и произвольно повторять/не повторять спецификаторы: я сам группирую только по спецификаторам, но при чтении на иной стиль вообще не обращаю внимания. В готовом же виде будет UML, то есть уже другой язык и особенности оформления потеряются при переводе. Могу завтра запостить, во что превратилась предложенная декларация. Кстати, тоже вполне читабельно.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
09.12.2011, 20:21  [ТС] #11
А нет, уже сегодня:
0
Изображения
 
09.12.2011, 20:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2011, 20:21
Привет! Вот еще темы с ответами:

Ошибка, связанная со статическим членом класса - C++
Есть код: class Foo{ public: static void f(); int a; }; void Foo::f(){ std::cin >> a; }

Linker error с приватным статическим членом класса - C++
class Point3d { private: int x; int y; int z; static...

Инициализация вектора статическим массивом в конструкторе класса - C++
Доброго всем времени суток!Помогите разобраться.Есть класс.Нужно вектор заполнить из статического массива,своего рода константной таблицей....

Удаление переменных в куче, созданных статическим методом класса - C++
Добрый вечер форумчане. При изучении паттернов проектирования наткнулся на следующий код: #include <iostream> #include <assert.h> ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.