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

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

25.04.2024, 04:02. Показов 10173. Ответов 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
6461 / 5666 / 1130
Регистрация: 11.10.2019
Сообщений: 15,080
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
6461 / 5666 / 1130
Регистрация: 11.10.2019
Сообщений: 15,080
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
6461 / 5666 / 1130
Регистрация: 11.10.2019
Сообщений: 15,080
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
12941 / 6808 / 1821
Регистрация: 18.10.2014
Сообщений: 17,231
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
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. На мобильном - сканируйте QR-код. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru