реклама на сайте
подробности

 
 
> Общие данные экземпляров класса, C++
toweroff
сообщение Apr 15 2014, 08:43
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Подскажите такой момент.
Есть класс, при инициализации он создает 3 блока данных, из которых только один блок уникальный для этого экземпляра, остальные - совершенно одинаковые для каждого экземпляра, не модифицируются. Так как занимают они приличный объем, есть сильное желание от них избавиться, точнее - выделить за пределы класса
Пока на ум приходит только некий глобальный флаг, который выставлять после инициализации самого первого экземпляра, но, скорее всего, есть более элегантное решение, просто я о нем не знаю sm.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
XVR
сообщение Apr 15 2014, 13:21
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
я же и спрашиваю - можно ли это сделать более красиво на ++?
В принципе можно, но тогда компилятор сам сделает эту самую статическую переменную в 'стиле С' (и еще одну придется попросту выбросить)

Код
class YourClass {
static StaticData d1;
LocalBuffer b1;

bool once_init()
  {
    ... init d1 using b1 as temporary space ...
  }
public:
YourClass()
   {
     static bool once_init_flag=once_init(); // 'once_init()' Will be called only once on first constructor call
     ....
   }
};

Если жалко места на once_init_flag - заверните once_init() в класс (сделайте что надо в его конструкторе), и установите статический экземпляр его в конструкторе YourClass
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- toweroff   Общие данные экземпляров класса   Apr 15 2014, 08:43
- - Сергей Борщ   Напрашивается сделать их статическими членами. И п...   Apr 15 2014, 08:58
|- - toweroff   Цитата(Сергей Борщ @ Apr 15 2014, 12:58) ...   Apr 15 2014, 09:10
|- - Сергей Борщ   Цитата(toweroff @ Apr 15 2014, 12:10) Это...   Apr 15 2014, 09:50
|- - toweroff   Цитата(Сергей Борщ @ Apr 15 2014, 13:50) ...   Apr 15 2014, 10:14
- - XVR   Цитатаи так тоже думал, но я забыл указать еще одн...   Apr 15 2014, 10:29
|- - toweroff   Цитата(XVR @ Apr 15 2014, 14:29) Пока вид...   Apr 15 2014, 10:45
|- - Сергей Борщ   Цитата(toweroff @ Apr 15 2014, 13:45) но ...   Apr 15 2014, 10:47
||- - toweroff   Цитата(Сергей Борщ @ Apr 15 2014, 14:47) ...   Apr 15 2014, 10:49
||- - Сергей Борщ   Цитата(toweroff @ Apr 15 2014, 13:49) кон...   Apr 15 2014, 12:01
||- - toweroff   Цитата(Сергей Борщ @ Apr 15 2014, 16:01) ...   Apr 15 2014, 12:06
||- - Сергей Борщ   Цитата(toweroff @ Apr 15 2014, 15:06) куч...   Apr 15 2014, 12:29
|- - XVR   Цитата(toweroff @ Apr 15 2014, 14:45) еще...   Apr 15 2014, 10:59
|- - toweroff   Цитата(XVR @ Apr 15 2014, 14:59) Ясно. А ...   Apr 15 2014, 11:21
- - toweroff   XVR, спасибо, проясняется картина. Здесь тогда воз...   Apr 15 2014, 14:00
- - XVR   ЦитатаЗдесь тогда возникает вопрос о использовании...   Apr 16 2014, 09:29


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01341 секунд с 7
ELECTRONIX ©2004-2016