Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Keks_Stolicny
9 / 8 / 4
Регистрация: 22.10.2017
Сообщений: 162

Объявление static переменной в классе

17.04.2018, 18:48. Показов 1215. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
class Worker
{
    private :
        struct WorkerItem
        {
            UnicodeString fio;
            UnicodeString depart;
            UnicodeString exp;
            UnicodeString pos;
            UnicodeString start;
            WorkerItem *next;
 
 
            WorkerItem(UnicodeString _fio, UnicodeString _depart, UnicodeString _exp,
                UnicodeString _pos, UnicodeString _start, WorkerItem *n = NULL)
            {
                fio = _fio;
                depart = _depart;
                exp = _exp;
                pos = _pos;
                start = _start;
                next = n;
            }
        };
 
        static int workersCount; //вот эту переменную мне надо сделать static
        WorkerItem *first;
        WorkerItem *last;
 
    public :
        //конструктор по умолчанию
        Worker()
        {
            workersCount = 0;
            first = last = NULL;
        }
 
        ~Worker();
 
        void AddLast(UnicodeString _fio, UnicodeString _depart, UnicodeString _exp,
                UnicodeString _pos, UnicodeString _start); 
 
        bool Remove(int i);
 
        int getWorkersCount()
        {
            return workersCount;
        }
 
        UnicodeString getInfo(int counter);
 
        UnicodeString Worker::SearchExp(UnicodeString Exp);
};
Выдаёт ошибку [ILINK32 Error] Error: Unresolved external 'Worker::workersCount' referenced from..
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.04.2018, 18:48
Ответы с готовыми решениями:

Ключевое слово static (использование для объявления переменной в классе)
Всем привет. Почитал книжки и интернет, но не совсем понял: Вот пример: test.h #ifndef TEST_H #define TEST_H #include...

Объявление статической переменной и статической функции в классе
Добрый вечер, столкнулся с проблемой и не могу решить. Есть класс SavingsAccount и в нем объявлена статическая переменная для процентной...

Отличие static от объявление переменных ДО функции main
Может быть я не совсем точно выразился в заголовке. Интересует отличие объявление переменных ДО функции main и объявление через static. По...

6
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
17.04.2018, 19:17
В cpp файл добавь строку

C++
1
int Worker::workersCount;
Добавлено через 26 секунд
А вообще выносить эту переменную в статическую для данного случая - бред.
1
 Аватар для Keks_Stolicny
9 / 8 / 4
Регистрация: 22.10.2017
Сообщений: 162
17.04.2018, 19:23  [ТС]
TRam_, сделал, однако выдало ещё больше ошибок. Одна из них [BCC32 Error] Unit1.cpp(47): E2089 Identifier 'workersCount' cannot have a type qualifier
Full parser context
Unit1.cpp(35): parsing: void _fastcall TForm1::Button2Click(TObject *)
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
17.04.2018, 19:28
Цитата Сообщение от Keks_Stolicny Посмотреть сообщение
C++
1
2
3
4
int getWorkersCount()
{
    return workersCount;
}
C++
1
2
3
4
static int getWorkersCount()
{
    return workersCount;
}
1
 Аватар для Keks_Stolicny
9 / 8 / 4
Регистрация: 22.10.2017
Сообщений: 162
17.04.2018, 19:48  [ТС]
_stanislav, всё равно осталась та ошибка. Не знаю. Просто при добавлении элемента workersCount изменяется как надо, а вот при удалении wjrkers count автоматический равен нулю, т.к. в новой кнопке "удаление" я создаю новый объект, отдельный от кнопки "добавить". Выходов кроме как сделать static переменную я не вижу. Может попробовать метод steWorkersCounter какой нибудь добавить... Но всё равно спасибо!
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
17.04.2018, 20:02
Keks_Stolicny, из конструктора убери workersCount
C++
1
2
3
4
5
Worker()
{
    // workersCount = 0;
    first = last = NULL;
}
Добавлено через 2 минуты
Цитата Сообщение от TRam_ Посмотреть сообщение
А вообще выносить эту переменную в статическую для данного случая - бред.
почему?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
18.04.2018, 11:46
Цитата Сообщение от _stanislav Посмотреть сообщение
почему?
по причине, которую как раз в твоём посте описана. Ну да, с таким исправлением (что workersCount инициализируется вне классов), но всё равно - подобный класс сможет нормально работать только с одним-единственным экземпляром, если нужно будет два - то всё перестанет работать в обоих.

Цитата Сообщение от Keks_Stolicny Посмотреть сообщение
т.к. в новой кнопке "удаление" я создаю новый объект, отдельный от кнопки "добавить".
вместо этого нужно было обоим кнопкам передать указатели на один и тот же объект, и тогда б всё работало полностью логично.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.04.2018, 11:46
Помогаю со студенческими работами здесь

Объявление static переменной в методе
В С/C++ в методах можно объявлять static переменные. Пытаюсь сделать так же в C#,но ошибка: static void some_function() { ...

Объявление static без имени
Наткнулся на такой код: private static final UriMatcher uriMatcher; static { uriMatcher = new...

Смысл запрета на объявление enum в не static классах?
Есть не static класс, у меня он называется ParsingPart. Экземпляры этого класса пока могут быть двух разных типов RAW, STRING. Потом...

Static переменная в классе
Не могу понять, как задавать статическую переменную в классе (и методы класса для ее обработки). Код не компилируется. Заголовок ...

Static поля в классе и инициализация
Мне нужен класс, у которого было бы общие переменные и функции их устанавливающие \ читающие для всех экземпляров. Но статик поля требует...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru