Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
18 / 19 / 4
Регистрация: 27.06.2016
Сообщений: 236

Как инициализировать статические переменные класса если они в привате?

08.09.2021, 19:38. Показов 3723. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно я решил потренировать свои навыки в ООП и для этого создал себе задачу сделать некий класс для управления насосами. Насосы , их может быть много, они могут качать могут не качать.

Я захотел сделать так чтобы все управление насосами шло полностью через свойства объекта(не силен в терминологии имею ввиду что все доступно через точку)

Вот что получается:
Насос: имеет свой номер, имеет статус(качает или не качает)


Количество насосов это статическая переменная. Каждый объект с помощью конструктора увеличивает эту переменную хранящую количество насосов на единицу.
Ее можно посмотреть но нельзя менять.
То есть чтобы узнать количество насосов нужна статическая функция. Потому что среди модификаторов доступа в классе в С++ нет такого варианта чтобы снаружи можно было читать но нельзя было менять.

Возникает проблема , а как собственно инициализировать нулем количество насосов? Оно же лежит в привате а туда никак не залезть никому снаружи. А изнутри нет "статического конструктора" одного для всех экземпляров.

Далее возникает следующая проблема. Хотелось бы иметь статическую функцию которая может посылать сообщения всем обьектам : " всем стоять", " все качайте", "дайте список тех кто работает",
Чтобы это сделать, нужно создавать статический-динамический список ссылок на все насосы например вектор содержащий указатели в который каждый объект при своем создании добавит ссылку на себя. ( а как он может потом себя удалить будет искать нужную ссылку в векторе по значению?)

В общем вопрос как весь этот ООП зоопарк загнать в один класс используя С++? Ведь это как мне кажется классическая задача ооп в геймдеве, там тоже юниты плодятся тысячами и им даются команды типа " все упали от взрыва" или кто ближе 100 метров к взрыву у того отлетели уши.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.09.2021, 19:38
Ответы с готовыми решениями:

Как инициализировать статические члены класса
Помогите пожалуйста....я не знаю как вывести в статическое поле значения((( #include <conio.h> #include <stdlib.h> ...

Как правильно инициализировать статические поля класса
Здравствуйте, уважаемые форумчане! Столкнулся с проблемой, решение нашел, но идею еще нужно понять. //MyClass.h class MyClass ...

Как правильно инициализировать статические члены класса?
Я новичок и заранее прошу прощение за тупые вопросы. Имеются два класса: Solution и Pool. Pool состоит из нескольких обьектов класса...

20
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
29.09.2021, 12:35
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от SmallEvil Посмотреть сообщение
хранить указатели как идентификатор обїекта не самій лучший вариант
Конечно, это всё полумеры, простейший пример.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.09.2021, 12:35

Как при создании экземпляра класса инициализировать переменные вложенного класса
Здравствуйте. Подскажите пожалуйста как при создании екземпляра класа инициализировать переменные вложеного класа. Добавлено через 22...

Не могу инициализировать переменные класса
Доброго времени суток, проблема такая: есть функция getscore (строки 92-106), всё вроде работает, ошибок нет, но в массиве score всегда...

Где инициализировать переменные класса?
Почему я не могу инициализировать переменную непосредственно в описании класса? class Primer { publuc: Metod1() {...}; ...

Как инициализировать переменные?
Здравствуйте. Где можно полно осведомиться о том как инициализируются переменные в C++ для каждого типа?

Как инициализировать компоненты в переменные в C#
Добрый день! Как разобраться. Нужно написать довольно простую программу. Дана форма, на ней 2 combobox, 2 текстовых поля, 3 radiobutton и...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru