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

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

08.09.2021, 19:38. Показов 3504. Ответов 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
147 / 135 / 50
Регистрация: 14.05.2021
Сообщений: 642
08.09.2021, 19:41
unsigned Насос::моя_статическая_переменная = 0;
0
фрилансер
 Аватар для Алексей1153
6437 / 5632 / 1126
Регистрация: 11.10.2019
Сообщений: 14,971
08.09.2021, 19:57
Святогор, так пойдёт ? )

C++
1
2
3
4
class Pump
{
   inline static size_t m_count=0;
};
Добавлено через 3 минуты
Цитата Сообщение от Святогор Посмотреть сообщение
Хотелось бы иметь статическую функцию которая может посылать сообщения всем обьектам
нужно делать систему рассылки сообщений. Встроенной такой системы в C++ нет
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
08.09.2021, 20:02
Цитата Сообщение от Святогор Посмотреть сообщение
Возникает проблема , а как собственно инициализировать нулем количество насосов? Оно же лежит в привате а туда никак не залезть никому снаружи.
При определении поля вы сможете указать инициализатор для него. "В привате" оно или нет значения не имеет.
0
17 / 18 / 4
Регистрация: 27.06.2016
Сообщений: 236
08.09.2021, 22:01  [ТС]
Ну вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef PUMPS_H
#define PUMPS_H
 
 
class Pumps
{
    public:
        Pumps();
        virtual ~Pumps();
 
    protected:
 
    private:
        static int quontity=0;
};
 
#endif // PUMPS_H
Выдает ошибку. Нельзя статические переменные инициализировать в классе:

include\Pumps.h|14|error: ISO C++ forbids in-class initialization of non-const static member 'Pumps::quontity'|

если const убрать тогда компилирует иначе никак.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
08.09.2021, 22:12
Цитата Сообщение от Святогор Посмотреть сообщение
Выдает ошибку. Нельзя статические переменные инициализировать в классе:
Разумеется нельзя. Инициализатор указвается в определении статического поля, а не в объявлении. Если вы хотите сделать определение поля прямо в классе, то надо добавить inline. А без inline, еще раз: инициализатор указвается определении. Где ваше определение?
0
17 / 18 / 4
Регистрация: 27.06.2016
Сообщений: 236
08.09.2021, 22:20  [ТС]
Не понял. А что такое определение? Я думал вы имеете в виду объявление переменной, я ее объявил. А что ещё нужно?
0
Заблокирован
08.09.2021, 22:21
Святогор, А это для кого писалось ? 8 пост

Цитата Сообщение от Святогор Посмотреть сообщение
Потому что среди модификаторов доступа в классе в С++ нет такого варианта чтобы снаружи можно было читать но нельзя было менять.
Можно - const.

Непонятно зачем статическое поле для количества насосов ?
Также непонятно желание кому то извне системы управления насосами изменять это поле ?

Цитата Сообщение от Святогор Посмотреть сообщение
Чтобы это сделать, нужно создавать статический-динамический список ссылок на все насосы например вектор содержащий указатели в который каждый объект при своем создании добавит ссылку на себя. ( а как он может потом себя удалить будет искать нужную ссылку в векторе по значению?)
Опять же, зачем статический массив/вектор ?
Зачем насосу удалять самого себя с системы?
0
17 / 18 / 4
Регистрация: 27.06.2016
Сообщений: 236
08.09.2021, 22:45  [ТС]
цитата: "Непонятно зачем статическое поле для количества насосов ?

(re: как же на этом форуме цитировать то? Ни кнопки нет ни надпсиь при выделении не появляется)
Также непонятно желание кому то извне системы управления насосами изменять это поле ?"

Как зачем статическое поле? А где хранить количество насосов? Для этого и нужны статические переменные чтобы для любого объекта из класса они были бы одной и тойже переменной. Конструктор увеличивает счетчик экземпляров на единицу а деструктор уменьшает и благодаря этому мы всегда знаем сколько есть насосов.

Зачем статический метод? Чтобы я мог сделать вот так: cout<<Pumps::quontity; Тоесть получить количество всех насосов.

Добавлено через 4 минуты
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Разумеется нельзя. Инициализатор указвается в определении статического поля, а не в объявлении. Если вы хотите сделать определение поля прямо в классе, то надо добавить inline. А без inline, еще раз: инициализатор указвается определении. Где ваше определение?
Я кажется понял... Нужно переменную как и методы сначала обьявить а потом еще и определить. Странно что я практически ничего не встечал об этом нигде. И оно работает!
А может поясните почему нужно так делать и где можно почитать об этом?
0
Модератор
Эксперт Java
 Аватар для alecss131
2835 / 1344 / 403
Регистрация: 11.08.2017
Сообщений: 4,293
Записей в блоге: 2
08.09.2021, 22:52
Цитата Сообщение от Святогор Посмотреть сообщение
Потому что среди модификаторов доступа в классе в С++ нет такого варианта чтобы снаружи можно было читать но нельзя было менять.
Можно же просто создать getter, который будет возвращать переменную, можно к нему как уже было сказано добавить const

Цитата Сообщение от Святогор Посмотреть сообщение
Ведь это как мне кажется классическая задача ооп в геймдеве, там тоже юниты плодятся тысячами и им даются команды типа " все упали от взрыва" или кто ближе 100 метров к взрыву у того отлетели уши.
Для этого используются другие способы, например паттерны. Разослать всем сообщение можно подписывая каждый создаваемый насос на события и триггеритьт это событие. Например в анреале это делегаты
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
08.09.2021, 23:00
Лучший ответ Сообщение было отмечено Святогор как решение

Решение

Цитата Сообщение от Святогор Посмотреть сообщение
Не понял. А что такое определение? Я думал вы имеете в виду объявление переменной, я ее объявил. А что ещё нужно?
Совершенно верно, вы ее объявили, но не определили. Без определения код компилироваться не будет.

Определение делается отдельно

C++
1
int Pumps::quontity = 0;
Цитата Сообщение от Святогор Посмотреть сообщение
Странно что я практически ничего не встечал об этом нигде. И оно работает!
Это как это? Без определения ничего "работать" не будет - программа не соберется.
1
17 / 18 / 4
Регистрация: 27.06.2016
Сообщений: 236
08.09.2021, 23:14  [ТС]
Цитата Сообщение от SmallEvil Посмотреть сообщение
Опять же, зачем статический массив/вектор ?
Зачем насосу удалять самого себя с системы?
Как зачем? Я не хочу создавать вектор из динамических объектов а потом его перебирать каждый раз когда понадобится раздавать массовые сообщения . Я хочу чтобы был статический метод для включения и выключения всех насосов.
типа так: Pumps::all_turn_OFF; Pumps::all_turn_ON; Этот статический метод имея конечно же статический вектор ссылок на объекты сам их все переберёт и включит каждый насос.

Зачем насосу самому удалять себя из системы? Как зачем? Я этому насосу даю сообщение запустив метод Pump.delete();
и он выключается и удаляет себя из статического списка насосов, больше никто на него не надеется и не учитывает в работе.
Может он сломался например или вообще его демонтировали и он не нужен.


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

Обычно в учебникак пишут мол сделайте динамический список ваших экземпляров и потом перебирайте его либо какой-то
специальный интерфейсный класс который предназначен чтобы пасти и регестрировать все эти объекты.
Я думал это распространенная задача и все кроме меня знают как это делать.

Добавлено через 12 минут
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Это как это? Без определения ничего "работать" не будет - программа не соберется.
Ну как... Обычно переменные только объявляют в классе никто их не определяет. Если не писать перед переменной слово "static" то никакого определения ей почему-то не требуется и все работает.

Цитата Сообщение от alecss131 Посмотреть сообщение
Можно же просто создать getter, который будет возвращать переменную, можно к нему как уже было сказано добавить const
Цитата Сообщение от alecss131 Посмотреть сообщение
Можно же просто создать getter, который будет возвращать переменную, можно к нему как уже было сказано добавить const
Да наверное можно и так сделать. А можно сделать статический метод для получения этого значения.
Вот только чтобы узнать через обычный геттер вам надо гдето взять ссылку на любой объект из класса и у него запустить этот метод а при статическом методе вам не нужно знать ничего вы просто обращаетесь к классу и не занимаетесь никаким поиском ссылок на объект. Согласитесь удобнее.
0
Заблокирован
08.09.2021, 23:28
Святогор, статическое поле будет одно и то же для всех объектов данного класса.
Допустим у тебя два разных менеджера насосов.
У них статическое поле
Цитата Сообщение от Святогор Посмотреть сообщение
static int quontity=0;
будет общее.
Так же статические метод это просто функции, не являющиеся собственностью класса, и могут оперировать лишь статическими полями.

Добавлено через 24 секунды
Если ты этого не знал, вот те сюрприз.

Добавлено через 1 минуту
Статические переменные-члены класса

Добавлено через 24 секунды
Это для ликбеза, подробнее читай в справочниках.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
08.09.2021, 23:35
Цитата Сообщение от Святогор Посмотреть сообщение
Ну как... Обычно переменные только объявляют в классе никто их не определяет. Если не писать перед переменной слово "static" то никакого определения ей почему-то не требуется и все работает.
Если не писать static, то конечно определения не требуется. Но при чем здесь это? Статические поля и нестатические поля - это совершенно разные, ничего общего не имеющие сущности, которые бессмысленно сравнивать друг с другом в таком плане.

Для статического поля требуется отдельное определение.
0
Модератор
Эксперт Java
 Аватар для alecss131
2835 / 1344 / 403
Регистрация: 11.08.2017
Сообщений: 4,293
Записей в блоге: 2
08.09.2021, 23:35
Святогор, Вот вы такое хотите?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
 
class Test {
public:
    Test() {
        count++;
    }
    ~Test() {
        count--;
    }
    static int getCount() {
        return count;
    }
private :
    static int count;
};
 
int Test::count{0};
 
int main() {
    Test t1{};
    std::cout << Test::getCount() << std::endl;
    Test t2{};
    Test t3{};
    Test t4{};
    std::cout << Test::getCount() << std::endl;
    return 0;
}
В консоли получим 1 и 4
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
09.09.2021, 00:09
Цитата Сообщение от Святогор Посмотреть сообщение
Я этому насосу даю сообщение запустив метод Pump.delete();
плохая идея.

Цитата Сообщение от Святогор Посмотреть сообщение
В принципе все сводится к тому же вопросу, как правильно разводить зоопарк каких нибудь сущнойстей
любая архитектура в конечном счете отвечает на два вопроса:
- "кто о ком знает" ?
- "кто кем владеет" ?

принцип хорошо организованной архитектуры:
- чем меньше одни классы знают о других,
тем лучше.

- класс должен решать только одну единственную задачу,
ради которой он был создан

что бы насос смог удалить сам себя,
он должен знать о среде в которой существует.
это - совершенно не нужное знание,
которое зазря усложнит конструкцию.


насос был создан для того, что бы сосать.
и только это он и должен уметь делать.

за хранение/создание/удаление должен отвечать специально предназначенный для этого контейнер.
например: std::vector, который и был разработан специально для этой цели.


если тебе нужна какая то высокоуровневая абстракция: "насосная станция",
которая должна управлять множеством насосов,
значит возьми и создай отдельный класс,
который так и назови: "насосная станция"

например, насосная станция будет уметь добавать/удалять насосы,
а так же включать и выключать их.

а вот самим насосам совершенно не нужно ничего знать ни о каких векторах,
и ни о каких насосных станциях.

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

https://rextester.com/NZCX41406


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <vector>
 
struct pump
{
    size_t m_id;
    bool m_started;
    
    pump(const size_t id) noexcept
        : m_id(id)
        , m_started()
    {
        std::cout << "pump " << this->m_id << " was created\n";
    }
 
    void run()
    {
        if(this->m_started)
            return;
        
        this->m_started = true;
        std::cout << "pump " << this->m_id << " was runned\n";
    }
    
    void stop()
    {
        if(!this->m_started)
            return;
        
        this->m_started = false;
        std::cout << "pump " << this->m_id << " was stopped\n";
    }
};
 
 
struct pumps
{
    using pumps_t = std::vector<pump>;
    
    void add(const size_t id) 
    {
        this->m_pumps.emplace_back(id);
    }
    
    void run_all()
    {
        for(auto& pump: this->m_pumps)
            pump.run();
    }
    
    void stop_all()
    {
        for(auto& pump: this->m_pumps)
            pump.stop();
    }
    
    
    ~pumps()
    {
        this->stop_all();
    }
    
    pumps_t m_pumps = {};
};
 
 
int main()
{
    pumps device;
    device.add(1);
    device.add(2);    
    device.run_all();
}
2
17 / 18 / 4
Регистрация: 27.06.2016
Сообщений: 236
28.09.2021, 12:46  [ТС]
Я понял о чем вы говорите. Сама мысль о том что должен существовать статический метод навеяна мне программированием на c# в dot net . Там есть такой компонент -серийный порт(serial port) , вы его создаете настраиваете и используете для связи.
Так вот , для того чтобы узнать список доступных портов там используется статический метод. Вот я и подумал раз сам майкрософт использует такой способ , то наверное это очень круто и так всегда надо делать.
И выглядит это вполне удобно.
В самом деле как бы это выглядело если бы они ещё создали класс который будет диспетчером серийных портов и будет их создавать.

В общем я сделал вышеописанную задачу двумя способами: и с классом "станция" который создает и управляет насосами и со статическими методами и встроенным статическим списком.

Если развивать дальше идею с некоторыми абстрактными насосами, то возникает следующие проблемы:

- Как сделать так чтобы насосы можно было передавать от одной станции в пользование к другой?
При этом он не должен потеряться, его нужно удалять только после того как его получила другая станция.
- Если уничтожить все станции то возникает вопрос а где при этом будут насосы?
Вообще если насосы не могут существовать без станции это выглядит не логично.
Получается нужен ещё какой-то промежуточный регистрационный класс в котором точно будут зарегистрированы все насосы и именно в нем они создаются выделяются для отправки в станции и уничтожаются.


Ещё дальше возникает потребность давать не точные команды насосным станциям типа вот таких:
- "включить три каких нибудь насоса" и это не должны быть какие-то определённые насосы и не просто с начала списка ,а рандомные. Делается это из соображений равномерного расхода их механического ресурса.

- вывести 5 насосов из работы и передать их из станции в общий ресурс.

Вообще проблема описанная в заглавии темы решена за что всем спасибо, дальнейшее обсуждение это уже качается принципов ООП.
0
Заблокирован
28.09.2021, 14:50
Цитата Сообщение от Святогор Посмотреть сообщение
В общем я сделал вышеописанную задачу двумя способами: и с классом "станция" который создает и управляет насосами и со статическими методами и встроенным статическим списком.
єто не то что ві хотели изначально

Цитата Сообщение от Святогор Посмотреть сообщение
Вообще если насосы не могут существовать без станции это выглядит не логично.
логично
Цитата Сообщение от Святогор Посмотреть сообщение
Получается нужен ещё какой-то промежуточный регистрационный класс в котором точно будут зарегистрированы все насосы и именно в нем они создаются выделяются для отправки в станции и уничтожаются.
в правильную сторону смотрите
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
28.09.2021, 16:28
Иногда рефлексия нужна, например, в играх, и хорошо бы иметь понимание, как её строить.


Простейший пример с иерархией классов и простейшим поиском по сущностям.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <ostream>
#include <array>
#include <iterator>
#include <algorithm>
#include <iostream>
#include <map>
 
class Object {
private:
    static std::map<const Object*, Object*> objects;
public:
    Object() {
        objects.insert(std::make_pair(this, this));
    }
    virtual ~Object() {
        objects.erase(this);
    }
 
    virtual const std::string &toString() const = 0;
 
    static std::vector<Object*> findAll() {
        std::vector<Object*> result;
        result.reserve(objects.size());
        for (auto object : objects) {
            result.push_back(object.second);
        }
        return std::move(result);
    }
    
    template<typename T>
    static std::vector<T*> findByType()
    {
        std::vector<T*> result;
        for(auto object : objects) {
            T *typedObject = dynamic_cast<T*>(object.second);
            if (typedObject != nullptr) {
                result.push_back(typedObject);
            }
        };
        return std::move(result);
    }
 
 
};
 
std::map<const Object*, Object*> Object::objects{};
 
class Cat : public Object {
private:
    static const std::string name;
public:
    virtual const std::string &toString() const {
        return name;
    }
};
 
const std::string Cat::name = "cat";
 
class Dog : public Object {
private:
    static const std::string name;    
public:
    virtual const std::string &toString() const {
        return name;
    }
};
 
const std::string Dog::name = "dog";
 
 
int main(int argc, char **argv) {
    Dog *d = new Dog();
    Cat *c = new Cat();
    Cat *c2 = new Cat();
 
    std::vector<Object*> all = Object::findAll();
    std::cout << "Number of objects: " << all.size() << ", first one: " << all[0]->toString() << std::endl;
 
    std::vector<Cat*> cats = Object::findByType<Cat>();
    std::cout << "Number of cats: " << cats.size() << ", first cat: " << cats[0]->toString() << std::endl;
    
    std::vector<Dog*> dogs = Object::findByType<Dog>();
    std::cout << "Number of dogs: " << dogs.size() << ", first cat: " << dogs[0]->toString() << std::endl;
    
    return 0;
}
0
Заблокирован
29.09.2021, 12:18
lemegeton, ну єто совсем другой разговор
Желаю автору разобраться.

Добавлено через 57 секунд
Но хранить указатели как идентификатор обїекта не самій лучший вариант....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.09.2021, 12:18
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru