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

Статический класс

25.04.2024, 04:02. Показов 11374. Ответов 165
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет
хочу создать полностью статический класс и создаю
но возникают ошибки неопределенные reference и пр.

хотелось бы сделать так
C#
1
2
3
4
5
6
7
static class SomeClass{
 
 
public int var1{}, var2{}, var3{};
......
 
}
но в с++ ругается на static перед словом класс
пишу в итоге так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class SomeClass{
 
SomeClass(){};
public:
 
static float var1{}, var2{}, varN{}; 
static float somethingMethod(){
//тут использую переменные var1, var2....
};
 
//static float var1{}, var2{}, varN{}; // без разницы   где объявляю переменные выше или ниже метода,  ругается не необъявленные переменные
 
 
 
}
 
 
//
 
вызываю так 
SomeClass::somethingMethod();

при компиляции получаю ошибки
необъявленные ссылки на var1, var2 ....

undefined reference to `SomeClass::var1


вопрос
как объявить статический метод класса, а в идеале и вообще весь класс, чтобы не создавать в коде его экземпляр?

Добавлено через 4 минуты
основная задача вынести этот статический класс в один файл то бишь в модуль не хедер + cpp а сразу все
в одном как в шарпах - очень удобно это они придумали в шарпах
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.04.2024, 04:02
Ответы с готовыми решениями:

Дан класс, преобразуйте его в статический класс со статическими методами и продемонстрируйте работу с ним
Дан класс, преобразуйте его в статический класс со статическими методами и продемонстрируйте работу с ним.

Статический класс
Здравствуйте, а я правильно понимаю что статический класс - это класс у которого все методы статические? Добавлено через 57 секунд ...

Статический член указатель на класс
Доброго времени суток. Что требовалось: создать статический указатель на класс CPerson, чтобы сохранить в него нужный объект. Как пытался...

165
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
13.05.2024, 15:34
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от pup_kin Посмотреть сообщение
объявление + определение равно инициализация.
Нет.
См. схему выше.

А определение - это вообще другое, это в .h-файле
0
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
13.05.2024, 15:35  [ТС]
заполнение первых байтиков - это же определение?

тогда для чего нужно определение, если есть инициализация.
0
фрилансер
 Аватар для Алексей1153
6504 / 5748 / 1134
Регистрация: 11.10.2019
Сообщений: 15,392
13.05.2024, 15:36
Цитата Сообщение от pup_kin Посмотреть сообщение
int ф;
это объявление с определением без инициализации (поскольку не static)

Цитата Сообщение от pup_kin Посмотреть сообщение
ф =1;
это присвоение (объект должен уже быть объявлен ранее)

Цитата Сообщение от pup_kin Посмотреть сообщение
int ф=1;
это объявление + определение + инициализация
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
13.05.2024, 15:36
Цитата Сообщение от Алексей1153 Посмотреть сообщение
- для статических объектов. Для других - будет неинициализированный объект
Предлагаю не накидывать лишних сущностей и уточнений. Весь контекст топика - про статические, а не переменные вообще.
А то ТС и так в 3-х соснах (в буквальном фактически смысле) плутает уже 7-ю страницу
0
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
13.05.2024, 15:37  [ТС]
Цитата Сообщение от KSergey9 Посмотреть сообщение
А определение - это вообще другое, это в .h-файле
я поччеум то думал
что в хедере объявление
определение в cpp

объявление
C++
1
2
3
4
5
6
7
8
9
10
class A{
void test();
}
 
cpp
include A.h
 
void A::test(){
// определение
};
0
фрилансер
 Аватар для Алексей1153
6504 / 5748 / 1134
Регистрация: 11.10.2019
Сообщений: 15,392
13.05.2024, 15:37
Цитата Сообщение от KSergey9 Посмотреть сообщение
это в .h-файле
не надо его путать файлами, файлы тут ни при чём
1
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
13.05.2024, 15:41  [ТС]
ага, т.е. это атавизм из cpp
определение
A::test = 2;

непонятно в чем отличие определения от инициализации.

Добавлено через 1 минуту
а может ли быть определение без инициализации?

Добавлено через 1 минуту
имеет ли смысл для переменной статической определение без инициаизации, если имеет - тогда это разные вещи, если не имеет - то это казуистика.
каком случае может быть определение без инициализации касаемо статических переменных?
и в целом на что это вообще влияет, я если честно не пойму, спасибо конечно за участие
но какая разница определение это или инициализация, с точки зрения работоспособности кода - какая разница?
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
13.05.2024, 15:42
Цитата Сообщение от pup_kin Посмотреть сообщение
заполнение первых байтиков - это же определение?
Действие - т.е. "заполнение" - вообще не надо сюда приплетать.
Для нас - с точки зрения программиста С++ - важно, что на момент выполнения самого первого оператора программы там в статической переменной уже будет 50.
А откуда и в какой момент они там взялись - это вообще не важно. Тем более, что в разных случаях это могут быть радикально разные вариации.
0
фрилансер
 Аватар для Алексей1153
6504 / 5748 / 1134
Регистрация: 11.10.2019
Сообщений: 15,392
13.05.2024, 15:42
Цитата Сообщение от pup_kin Посмотреть сообщение
в чем отличие определения от инициализации.
вот стакан спроектировали (один и тот же - сразу в четырёх конторах) - это объявление

вот стакан изготовили на фабрике - это определение. Пусть это статический стакан, поэтому он сразу инициализирован воздухом

но рядом с линией проходил сторож Василий и он пожелал стакан инициализировать красненьким

Не по теме:

а вот сферический не статический стакан будет заполнен вакуумом. Если только рядом не появится Василий

1
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
13.05.2024, 15:42  [ТС]
определение статической переменной без инициализации бывает?
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
13.05.2024, 15:44
Цитата Сообщение от pup_kin Посмотреть сообщение
я поччеум то думал
что в хедере объявление
определение в cpp
объявление
Я выше давал ссылку.
Там это всё разжевано где что как называется общепринято.
Я так понял читать вы ничего вообще не собираетесь? Чукча писатель?
0
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
13.05.2024, 15:45  [ТС]
всем спасибо, надо тему заканчивать.
нужно время на осмысление.
как по мне - 90% чисто история, не философия
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
13.05.2024, 15:46
Цитата Сообщение от pup_kin Посмотреть сообщение
определение статической переменной без инициализации бывает?
Читать уже когда?

Цитата Сообщение от KSergey9 Посмотреть сообщение
Определение обязано быть.
А вот инициализацию можно в программе не указывать, если она не требуется.
Добавлю, что определение статической переменной класса тоже обязано быть, причем отдельно от объявления.
(inline свежемодное нам тут все карты только вот путает)
0
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
13.05.2024, 15:56  [ТС]
Цитата Сообщение от KSergey9 Посмотреть сообщение
Читать уже когда?
не понял
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
13.05.2024, 16:25
Цитата Сообщение от pup_kin Посмотреть сообщение
вся тема решалась добавлением инициализации переменных к которым происходило обращение в методе.
Вы пришли из других языков (как я понял ваш соновной 1С).
Так вот, то был не ЯП (язык программирования) , а интерпретатор.
Чем раньше вы поймете разницу - тем скорее вам станет легче )
0
13.05.2024, 16:29

Не по теме:

Цитата Сообщение от SmallEvil Посмотреть сообщение
то был не ЯП (язык программирования) , а интерпретатор.
За терминологию я бы тут очень поспорил!
ЯП - это одно, а компилятор или интерпретатор - перпендикулярное же.

0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
13.05.2024, 16:50
Цитата Сообщение от KSergey9 Посмотреть сообщение
ЯП - это одно, а компилятор или интерпретатор - перпендикулярное же.
Что чего ?
перпендикулярное чему ?

ЯП - это одно, скрипт - это другое.
Компилятор - это одно, интерпретатор - это другое.
И где же здесь ПЕРПЕНДИКУЛЯРНОСТЬ ?

Вот тут может быть всё что угодно :


Добавлено через 1 минуту
Цитата Сообщение от SmallEvil Посмотреть сообщение
И где же здесь ПЕРПЕНДИКУЛЯРНОСТЬ ?
Хотя перевод всё искажает, я его знал в другом.
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13227 / 6859 / 1827
Регистрация: 18.10.2014
Сообщений: 17,381
13.05.2024, 17:21
Цитата Сообщение от pup_kin Посмотреть сообщение
определение статической переменной без инициализации бывает?
Что такое "без инициализации"? Без явной, прописанной пользователем инициализации? Пожалуйста

C++
1
static int a;
1
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
13.05.2024, 17:33  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Что такое "без инициализации"? Без явной, прописанной пользователем инициализации? Пожалуйста
C++Выделить код
1
static int a;
а что в данном случае будет объявление ?

Добавлено через 2 минуты
Цитата Сообщение от SmallEvil Посмотреть сообщение
Так вот, то был не ЯП (язык программирования) , а интерпретатор.
ну так и с++ тоже работает в платформе ОС,
и интерпретируется в инструкции характерные для текущей архитектуры.
я если честно не понимаю разницы между компиляцией и интерпретацией
ну понимаю конечно концептуально, но фактически - оно ж все интерпретируется
это конечн тема еще на 20 страниц, но думаю, ее не стоит поднимать.
Да 1С - основной
0
13.05.2024, 17:43

Не по теме:

Цитата Сообщение от pup_kin Посмотреть сообщение
как по мне - 90% чисто история, не философия
В этой теме было очень много технически важных деталей о языке, без которых писать на нем эффективно не получится. Зря вы выше на TheCalligrapher бочку катите. Лучше возьмите и напишиет конспект по всей теме, а то вопросы уже повторяться начали (что-то еще на третьей странице было освещено).

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2024, 17:43

Не могу вызвать простой статический класс
Вот такой код получился (VS2017): #pragma once #include <iostream> #include <string> static class Func { ...

Статический полиморфизм. Базовый класс «прямоугольник»
Здравствуйте, дорогие участники форума! Помогите, пожалуйста! Необходимо реализовать статический полиморфизм. Нужно вызвать с помощью...

Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже -->
Слова английского текста рассортировать по возрастанию количества заданной буквы в слове. Слова с одинаковым количеством такой буквы...

создать статический массив строк как статический массив указателей на строки, задание ниже -->
Слова английского текста, начинающиеся с гласных букв, рассортировать в алфавитном порядке по первой согласной букве слова. Остальные слова...

Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала
Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для...


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

Или воспользуйтесь поиском по форуму:
160
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru