Войти
ФлеймФорумОбщее

Вопросы (759 стр)

Страницы: 1758 759 760 761789 Следующая »
#11370
8:08, 23 окт. 2019

Panzerschrek[CN]
>Говнокод какой-то.
А как не говнокод?

>memset в конструкторе.
Вот это точно говнокод.

0iStalker
>Конструктором, вестимо, - это азы C++
Ага, только полотно из дефолтово проинициализированных полей как-то не радует.

Faceroll
Вот это наверное то, что нужно, благодарствую.


#11371
9:11, 23 окт. 2019

nes
> А как не говнокод?
Разбить класс на логически обособленные части. У каждого получившегося класса инициализировать поля прямо в классе или в конструкторе.

#11372
9:17, 23 окт. 2019

Panzerschrek[CN]
А если полей 100500?

#11373
10:31, 23 окт. 2019

nes
> А если полей 100500?
А зачем тебе 100500 полей? Вангую, что их можно чем-то заменить более подобающим.
И вообще, код в студию!

#11374
11:05, 23 окт. 2019

Panzerschrek[CN]
> А зачем тебе 100500 полей? Вангую, что их можно чем-то заменить более
> подобающим.
в класс завернуть, пусть в нем будет 100500 полей?

#11375
11:16, 23 окт. 2019

Panzerschrek[CN]
Вот пишешь ты рендер враппер для какого-нибудь D3D11,
для минимального уровня аля 90-х,
тебе понадобится 100500 полей в классе девайса под одни только стейты.

#11376
11:18, 23 окт. 2019

Panzerschrek[CN]
Например вот:

+ Показать
#11377
11:27, 23 окт. 2019

nes
> Например вот:
Ну да, по сути говнокод, но необходимый.
Тут или руками каждому полю прописать =nullptr и =0, или memset звать.

#11378
11:30, 23 окт. 2019

nes

Да пропиши явно -

class private_graphics_t
{
public:

  HWND window = 0;
  size2_t frame_size = 0;
  ID3D10Device* device = nullptr;
  IDXGISwapChain* swap_ch = nullptr;
...
Давно уже есть такой синтаксис эквивалентный спискам инициализации, но более удобный. Сразу зато видно что к чему и есть возможность не занулять то что не нужно занулять.

#11379
11:37, 23 окт. 2019

=A=L=X=
У меня такой синтаксис вызывает дикие ассоциации с объявлением констант.

#11380
(Правка: 11:41) 11:41, 23 окт. 2019

nes
> У меня такой синтаксис вызывает дикие ассоциации с объявлением констант.

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

#11381
11:52, 23 окт. 2019

Еще вопрос - почему этот кривой Цэ++ умеет так:

byte keys[256] = {}; // Ok, I know how to zero all of them
Но не умеет так:
keys = {}; // Fuuuu!! I forgot how to zero all of them

В то же время, умеет так:

struct keys_t
{
   byte keys[256];
};

keys_t keys = {}; // Ok, I know how to zero all of them
keys = {}; // Mother of God! It's kind of magick!

#11382
11:55, 23 окт. 2019

nes
> keys = {};
Тут произошёо неявный каст массива к константному указателю

#11383
11:56, 23 окт. 2019

1 frag / 2 deaths
И как тогда в крестах обнуляют массив, без явных мемсетов?

#11384
11:58, 23 окт. 2019

nes

for (auto& it: massiv) { it.obnulit(); }
Страницы: 1758 759 760 761789 Следующая »
ФлеймФорумОбщее