Форум программистов, компьютерный форум CyberForum.ru

Статические свойства структур в заголовочных файлах - C++

Восстановить пароль Регистрация
 
SaweR
 Аватар для SaweR
29 / 29 / 1
Регистрация: 29.09.2009
Сообщений: 177
23.04.2014, 12:01     Статические свойства структур в заголовочных файлах #1
Всем привет. Не могу найти в интернете инфу о том, как ведут себя статические свойства структур определённых в заголовочных файлах и используемых в нескольких местах (этакая модульность).
Вот к примеру есть у меня хедер файл с определённой в нём структурой:
C++
1
2
3
4
struct Constants
{
    static const unsigned int Female = 10;
};
И буду я подключать этот хедер к разным файлам реализации. Будет ли какое-то дублирование переменной Female или адрес в памяти будет один и тот же?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 12:01     Статические свойства структур в заголовочных файлах
Посмотрите здесь:

C++ Подключение заголовочных файлов
C++ Объявлние классов в разных заголовочных файлах
C++ массивы в заголовочных файлах
C++ Объявление заголовочных файлов
Подключение заголовочных файлов C++
C++ О стандартных заголовочных файлах
C++ Статические свойства классов
Определение переменных в заголовочных файлах C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Worf
42 / 42 / 6
Регистрация: 06.02.2014
Сообщений: 227
23.04.2014, 12:04     Статические свойства структур в заголовочных файлах #2
Нет дублирования не будет, потому что ты подключаешь один и тот же header файл, поэтому обращение будет только к этой переменной всегда
DrOffset
6460 / 3834 / 885
Регистрация: 30.01.2014
Сообщений: 6,629
23.04.2014, 12:25     Статические свойства структур в заголовочных файлах #3
SaweR, в таком виде не будет. Потому что в этой записи есть только declaration. Если использовать Female только как интегральную константу, то definition и не понадобится. Адреса у такой константы не будет, это сущность времени компиляции.

Но вот если потребуется взять адрес:
C++
1
&Constants::Female;
то будет нужно и definition (т.к. константа уже будет размещаться в памяти):
C++
1
2
3
4
5
struct Constants
{
    static const unsigned int Female = 10;
};
const unsigned int Constants::Female; //definition
Если сделать его прямо в заголовочном файле, то будет ошибка множественного определения при включении его в разные cpp. Поэтому, definition стоит вынести в какой-то отдельный cpp, например в Constants.cpp.
Yandex
Объявления
23.04.2014, 12:25     Статические свойства структур в заголовочных файлах
Ответ Создать тему
Опции темы

Текущее время: 05:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru