Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/48: Рейтинг темы: голосов - 48, средняя оценка - 4.81
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826

Инициализация статического поля

29.03.2016, 16:44. Показов 9885. Ответов 72
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,

как объяснить необходимость объявить все статические поля, даже те у которых есть конструктор по умолчанию, вне класса до main. Почему код ниже компилятор не может сам всё порешать в 2016-ом году?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
 
struct Foo
{
   static int x;
};
int Foo::x;
 
int main()
{
   Foo::x;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.03.2016, 16:44
Ответы с готовыми решениями:

Инициализация статического массива
Добрый вечер! Допустим, что имеется класс class A { .... public: static int array; .... }; Как инициализировать массив в...

Инициализация статического массива
Ребята, помогите пожалуйста. Не получается проинициализировать NULL-ами статиеский массив указателей. Пишет слудеющее (прикрепил скриншот)....

Инициализация в классе статического объекта класса :)
Добрый день! Огромное спасибо за ваше внимание! Помогите разобраться с такой проблемой. Есть чисто статический класс (не нужен его объект...

72
30.03.2016, 20:01
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от hoggy Посмотреть сообщение
тогда вы в курсе,
что шаблоно код целиком и полностью живет в хедерах.
Риторический вопрос: разве шаблонокод не может жить и использоваться только в cpp?
Не придираюсь. Просто поправка.

0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
30.03.2016, 20:03
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Да в том то и дело что ничего он не знает. Поэтому для того чтобы шаблоны слинковать либо начинает фантазировать либо статик этот не совсем статик.
ну то есть, на практике все отлично работает.
однако, "он ничего не знает" и "фантазирует".

мне иногда хочется спросить:
люди, вы свои академ-теории вообще хоть как то с реальной практикой состыковываете?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вот это и есть криво. Линкер должен не копии объединять а искать коллизии имен.
1.
а вам не все ли равно, как свой личный геммор будет разруливать линкер?

2.
студийный выкидывает лишние копии.
он ничего не объединяет.
он убирает лишнее.
очевидно, что для этого он должен найти коллизии.
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
30.03.2016, 20:05
Цитата Сообщение от hoggy Посмотреть сообщение
реализация на усмотрении разработчиков компилятора.
Другими словами - Берн в свое время толкового решения не нашел, а пошаблонить хотел, а теперь разгребайте недоделку кто во что горазд.

Добавлено через 1 минуту
Цитата Сообщение от hoggy Посмотреть сообщение
а вам не все ли равно, как свой личный геммор будет разруливать линкер?
Если линкер перестанет искать коллизи то начнется конкретнейший гемморой у разработчика, связанный с тем что непонятно что откуда читается и какая именно функция вызывается
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
30.03.2016, 20:05
Цитата Сообщение от castaway Посмотреть сообщение
Риторический вопрос: разве шаблонокод не может жить и использоваться только в cpp?
Не придираюсь. Просто поправка.
может.
но я не рассматриваю этот кейс,
потому что в разрезе темы он не имеет смысла.

ограничения статических членов класса связаны с "многофайловостью" проекта.
поэтому, рассматривать эту проблему нужно тоже
в разрезе "множества ед. трансляций".
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
30.03.2016, 20:23
Цитата Сообщение от hoggy Посмотреть сообщение
ну то есть, на практике все отлично работает.
однако, "он ничего не знает" и "фантазирует".
Цитата Сообщение от hoggy Посмотреть сообщение
потом линкер повыкидывает все, кроме одной.
Вот это и называется - фантазирует.

Не по теме:

Цитата Сообщение от hoggy Посмотреть сообщение
вы свои академ-теории вообще хоть как то с реальной практикой состыковываете
Ну надеюсь понимаете что понимание того что и как происходит в компиляторе и линкере оно не из воздуха взялось, а из опыта разработки оных. Даже если не для С++ и с компиляцией не в машкод, принцип от этого не меняется. Давно это правда было каомпиляторы скриптов всяких. Сейчас практика немного другая, типа импорта из промышленных CAD вот таких вот моделек:

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

Миниатюры
Инициализация статического поля  
0
30.03.2016, 20:23

Не по теме:

Цитата Сообщение от hoggy Посмотреть сообщение
но я не рассматриваю этот кейс,
потому что в разрезе темы он не имеет смысла.
Нет вопросов.

0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
30.03.2016, 21:35
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вот это и называется - фантазирует.
допустим. ну и что?
у вас какие то проблемы с этим?
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну надеюсь понимаете что понимание того что и как происходит в компиляторе и линкере оно не из воздуха взялось,
мне не понятно, зачем вы на этом заостряетесь.

это - трудности компилятора/линкера.

какая вам разница, как они сделают вам "хорошо" ?
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
30.03.2016, 21:39
Цитата Сообщение от hoggy Посмотреть сообщение
какая вам разница, как они сделают вам "хорошо"
вопрос в том что если он начнет тотально сшивать совпадающие символы вместо того чтобы искать коллизии то это уже будет не "хорошо" а "очень плохо". Не факт что при использовании статиков в шаблонах это "очень плохо" нигде ни у кого не вылазет, даже если ни я ни вы не сталкивались с тем чтобы оно вылезло.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
30.03.2016, 21:47
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
вопрос в том что если он начнет тотально сшивать совпадающие символы вместо того чтобы искать коллизии то это уже будет не "хорошо" а "очень плохо". Не факт что при использовании статиков в шаблонах это "очень плохо" нигде ни у кого не вылазет, даже если ни я ни вы не сталкивались с тем чтобы оно вылезло.
то есть, очевидный факт: что бы выкинуть совпадение, нужно найти коллизию,
вы проигнорировали.

люди, почему вы такие тупые?

ладно, я постараюсь пропустить весь этот бред мимо ушей,
и сохранить рамки конструктива.

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

приведите пожалуйста практические примеры,
которые иллюстрируют убожество компиляторов,
и необходимость самостоятельно решать за них вопросы.
0
30.03.2016, 21:57

Не по теме:

Цитата Сообщение от hoggy Посмотреть сообщение
люди, почему вы такие тупые?
Ну не все рождаются гениями..
Многие люди просто упёртые и глупые, многие гордые, многие умнее нас, лично я - просто тупой по жизни.

0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
30.03.2016, 22:45
Цитата Сообщение от castaway Посмотреть сообщение
Ну не все рождаются гениями..
не нужно быть гением,что бы дружить с банальным здравым смыслом.

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

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

это шандец-занавес.

маразм в критической отметке.
0
30.03.2016, 22:52

Не по теме:

Тут очевидная клиника, народ. Не обращайте внимания. Мы дали ТСу исчерпывающие ответы. Тему можно закрывать. Подождите - и оно само затихнет.

0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
30.03.2016, 23:03
Цитата Сообщение от hoggy Посмотреть сообщение
приведите пожалуйста практические примеры,
которые иллюстрируют убожество компиляторов,
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
//ifdef гуарды для краткости опущены но они тут не помогут
//---1
template <class T> Bar{
    static T Foo;
    //implementation
};
template <class T> T Bar<T>::Foo;
 
//---1.h
extern void Proc1();
 
//---1.cpp
#include "1";
void Proc1(){
     Bar<int> Baz;
     // ...other code
}
//---2
template <class T> Bar{
    static T Foo;
    //other implementation
};
template <class T> T Bar<T>::Foo;
 
//---2.h
extern void Proc2();
 
//---2.cpp
#include "2";
void Proc2(){
     Bar<int> Baz;
     // ...other implementation
};
 
 
//---- main.cpp
#include "1.h"  // Ну очень
#include "2.h"  // Очень нехорошая ситуация получится
void main(){
    Proc1();
    Proc2();
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.03.2016, 23:03
Помогаю со студенческими работами здесь

Инициализация статического члена из шаблонного класса
Добрый день. Есть код: template&lt;int test&gt; class Test { template&lt;int a&gt; struct Inner { static bool...

Инициализация константного статического объекта - члена класса
Здравствуйте, у меня возникла проблема с инициализацией статического объекта, который является членом класса. Этот объект должен быть...

Инициализация статического члена std::vector в шаблонном классе
есть класс myclass , владеющий классом struct template&lt;class T&gt; class myclass { struct mystruct {}; public: static...

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

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


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

Или воспользуйтесь поиском по форуму:
73
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru