|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||||||||||
Статический класс25.04.2024, 04:02. Показов 11691. Ответов 165
Метки нет (Все метки)
Всем привет
хочу создать полностью статический класс и создаю но возникают ошибки неопределенные reference и пр. хотелось бы сделать так
пишу в итоге так
при компиляции получаю ошибки необъявленные ссылки на var1, var2 .... undefined reference to `SomeClass::var1 вопрос как объявить статический метод класса, а в идеале и вообще весь класс, чтобы не создавать в коде его экземпляр? Добавлено через 4 минуты основная задача вынести этот статический класс в один файл то бишь в модуль не хедер + cpp а сразу все в одном как в шарпах - очень удобно это они придумали в шарпах
0
|
|||||||||||
| 25.04.2024, 04:02 | |
|
Ответы с готовыми решениями:
165
Дан класс, преобразуйте его в статический класс со статическими методами и продемонстрируйте работу с ним Статический класс Статический член указатель на класс |
|
Нарушитель
6690 / 3078 / 1064
Регистрация: 01.06.2021
Сообщений: 11,872
|
||
| 26.04.2024, 20:52 | ||
|
хочется уменьшить писанину - меняй язык Если код для себя, то можно писать как угодно. Но кому, блет, нужны такие bloated заголовки? Вы задумывайтесь, как вообще переводится слово header и для чего он предназначен. Ну и что с того, что вы написали все в заголовке и файлов стало меньше? Блет, пишите всё в одном main.cpp и будет вам один файл)))
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 26.04.2024, 20:58 | ||
|
Но иногда это просто нужно сделать. Так же, как, например, нужно делать с шаблонами.
1
|
||
|
"C with Classes"
|
|
| 26.04.2024, 21:37 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 26.04.2024, 21:51 | ||
|
Например у нас есть Си-библиотека (или просто библиотека с Си-интерфейсом). Зачем делают библиотекам Си-интерфейс, я думаю, ни для кого не секрет: ABI Си стабильно и поддерживается большинством программных систем. Но у Си-интерфейс есть недостатки, в частности необходимость вручную контролировать время жизни ресурсов. Как можно получить преимущества С++, но при этом не потерять в переносимости? Допустим, я хочу написать библиотеку в VC++, но дать возможность ей пользоваться из любого компилятора С и С++ под Windows. Я делай ей Cи API, и делаю ей C++ API, которое полностью inline и инкапсулирует работу с Си API. Т.к. все функции в С++ API - inline, т.е. не экспортируются, то различие ABI при использовании его из разных компиляторов не играет роли: каждый компилятор собирает его так, как ему нужно, сводя все в итоге к сишным вызовам, которые уже переносимы. Хорошо написанная таким образом библиотека не выдает свою Си-сущность, пользователь не заглядывая в заголовочный файл даже и не знает, что на самом деле пользуется Си-интерфейсами. Добиться этого без inline api просто невозможно.
2
|
||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||||||||||||||||
| 26.04.2024, 23:30 [ТС] | |||||||||||||||||
|
определение переменной
![]() я написал определение потому что изначально указал явно значение
0
|
|||||||||||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 26.04.2024, 23:51 | |
|
pup_kin, там в примере в видео была глобальная переменная, а у вас статическая в классе.
0
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|
| 27.04.2024, 02:23 [ТС] | |
|
а такое усложнение языка с++ оно с чем-то связано ?
с тем что каждый пишет кто во что горазд, и потом при слиянии проектов возникают всякие инциденты? т.е. что не выработан общий стиль какой-то? потому что пипец, мне кажется на осмысление того доклада ну минимум неделя нужна- а по уму наверн месяц, а это базовые вещи - это даже не прикладная задача. это наверное все актуально при распределенной команде и групповой разработке? Добавлено через 1 час 35 минут а как раньше справлялись с множественным определением, когда не было "inline" - писали код по другому?
0
|
|
|
"C with Classes"
|
|
| 27.04.2024, 04:33 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||
| 27.04.2024, 08:50 | |||||||
|
Есть книга "Дизайн и эволюция С++" от автора языка, она малотехническая, в основном написана как мемуары. Там все про это есть, про причины, про сложность истинную и мнимую. Я уже понял, что вы не особо любите читать, но если уж взялись за С++, это придется преодолеть. Иначе у вас ничего не получится с этим языком. Большая часть расхождений с ним связана с какими-то техническими нюансами конкретных проектов или историческими причинами. Если вы думаете, что в каком-нибудь C# нормально разбираться сильно проще, то вы ошибаетесь. Да, там сложность распределена иначе, но она все равно есть. И у тех, тех кто игнорирует нюансы все равно будут проблемы, или будут проблемы у тех, кто пользуется результатами их поверхностного программирования. Да, код писали по-другому. Добавлено через 12 минут
1
|
|||||||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|||
| 27.04.2024, 09:01 | |||
|
Во всех cpp-файлах, кроме одного. На кой вам именно статический класс понадобился? Для решения вашей задачи C++ предлагает другие конструкции, вот и весь секрет. Тот же namespace, например. Или любимый в С++ среде синглтон. И никакие "статические" классы не требуются. Хотя, согласен, иметь переменные "в модуле", т.е. этакий синглтон в масштабах приложения - удобная штука в целом. Но в С++ в самом языке впрямую этого нет. Добавлено через 3 минуты PS Как-то видел код на C#, написанный матёрыми С++ никами. Так там половина кода состояла из using{}, т.к. парни в принципе не понимали и не принимали концепцию "как это так, деструктор вызовется хрен знает когда?!". Еще раз: это были реально толковые и матёрые С++ программисты, цитировавшие стандарт наизусть, но вот такая вот проф-деформация. Они просто не умели иначе мыслить плюс пару раз обожглись об незакрытый вовремя файл (в деструктуре же должен был закрыться! уже же вышел из области видимости!) Ну и понеслась Хотя на мой вкуса - дельфиста - конструкция try / finally, которая в C# имеет место быть, в тех случаях, когда это требуется (типа закрыть файл) - намного нагляднее, чем using. Но т.к. в С++ try/finally нет - про паттерны его использования никто из этих парней даже и не подумал, а может и не в курсе такой фичи.
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 27.04.2024, 09:24 | ||
0
|
||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
||
| 27.04.2024, 09:35 | ||
|
Да она и не нужна в общем-то в С++. И таки да, это были по большей части юниксовые программисты.
0
|
||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||||||||||||||||||||||||||
| 06.05.2024, 03:58 [ТС] | ||||||||||||||||||||||||||
|
я чет совсем отупел
почему в одном случае нормально работает без inline статическое поле и метод t и test и требует inline для
в котором используются переменные LastLatitude и др. Добавлено через 8 минут ага при изменении кода внутри calculateTheMovement с
многое упрощает? верно ли понимают что можно везде ставить inline - и это не будет плохо и в последующих релизах - эта тенденция сохраниться?
0
|
||||||||||||||||||||||||||
|
фрилансер
6509 / 5768 / 1135
Регистрация: 11.10.2019
Сообщений: 15,408
|
|||
| 06.05.2024, 06:35 | |||
|
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||
| 06.05.2024, 08:17 | ||||
t есть в cpp.Добавлено через 2 минуты t. И не нужен будет inline.И вы должны понять (это обязательно), что он от вас не inline требует. а определение. А уж как вы его (определение) предоставите, через inline или как - это уже ваше дело.
1
|
||||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||||||
| 06.05.2024, 19:40 [ТС] | ||||||
|
а чем плохо инициализация в классе неконстантного статического выражения?
какие могут быть последствия от такой инициализации? Compilation error: ISO C++ forbids in-class initialization of non-const static member 'odometer::tachometer' чем инициализация вне тела класса
0
|
||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 06.05.2024, 23:51 | ||
|
Какое может быт последствия, что вы просто подумаете что встали и не встали. /подумали что пришли на работу но не пришли. Подумали что спасли друга но не спасли. И ? Раница есть ? Лучше продавайте бургеры.
0
|
||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||||||||||||||||
| 07.05.2024, 20:11 [ТС] | ||||||||||||||||
|
вообще не понимаю какая разница
или
что плохого произойдет если я внутри класса инициализирую поле? Добавлено через 9 минут более того в шарпах к примеру так и работает и ничего страшного не происходит
но опять же непонятно. почему в шапрах так можно писать, а в с++ нельзя? для чего инициализация именно вне класса нужна? или это просто стоит принять как особенность синтаксиса языка и не думать ?
0
|
||||||||||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 07.05.2024, 20:12 | |
|
pup_kin, сугубо исторические причины.
1
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|
| 07.05.2024, 20:13 [ТС] | |
|
т.е. из хедера и сипипи
я вспомнил, я то пишу все в одном. да точно описательная часть и сипипишная. спустя две недели кажется что-то становиться понятно
0
|
|
| 07.05.2024, 20:13 | |
|
Не могу вызвать простой статический класс Статический полиморфизм. Базовый класс «прямоугольник» Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже --> создать статический массив строк как статический массив указателей на строки, задание ниже --> Объясните человеческим языком мне чайнику что такое singleton, статический класс. Зачем они нужны. Что рекомендуете прочитать мне для начала Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|