Size: a a a

2021 February 16

SH

Serhii Herashchenko in supapro.cxx
круг обычно рисуют через параметрическое уравнение и количество точек
источник

I

Ioann_V in supapro.cxx
Serhii Herashchenko
не обязательно
Не суть, основная загвоздка возникает не тут. А на следующем шаге. Теперь смотри, у тебя есть вот эта иерархия, что выше, circle, rectangle e.t.c с виртуальным методом render. Ну я обычно без него делаю, а через диспатч с помощью хеш мапы по type_id. Проблема у меня идет дальше. Она такая, теперь я хочу, чтобы мои вот эти рисуемые данные, можно было сортировать по индексу.
источник

I

Ioann_V in supapro.cxx
Соответственно, я делаю такую штуку:

class indexed_rdener_data_t
{
   uint32_t m_index;
   render_base*  m_render;
};
источник

I

Ioann_V in supapro.cxx
Так? Вроде так, сортируем по индексу и blah blah blah
источник

I

Ioann_V in supapro.cxx
Вот в моем решении выше, я храню внутри render_base
источник

I

Ioann_V in supapro.cxx
И вот тут то, данные о рендере и стираются.
источник

I

Ioann_V in supapro.cxx
То есть я уже не знаю, что там круг или что то еще
источник

SH

Serhii Herashchenko in supapro.cxx
Ioann_V
То есть я уже не знаю, что там круг или что то еще
так и не нужно знать что там
источник

SH

Serhii Herashchenko in supapro.cxx
ты же рисуешь шейп
источник

I

Ioann_V in supapro.cxx
А если я хочу поменять радиус у круга????
источник

I

Ioann_V in supapro.cxx
который рисую
источник

SH

Serhii Herashchenko in supapro.cxx
ну так меняешь радиус кругу)))
источник

I

Ioann_V in supapro.cxx
Serhii Herashchenko
ну так меняешь радиус кругу)))
так я уже не знаю, что у меня там, круг или не круг - делать static_cast?
источник

С

Сергей in supapro.cxx
Ioann_V
Не суть, основная загвоздка возникает не тут. А на следующем шаге. Теперь смотри, у тебя есть вот эта иерархия, что выше, circle, rectangle e.t.c с виртуальным методом render. Ну я обычно без него делаю, а через диспатч с помощью хеш мапы по type_id. Проблема у меня идет дальше. Она такая, теперь я хочу, чтобы мои вот эти рисуемые данные, можно было сортировать по индексу.
using Type =std::variant<nullptr,Cycle,Rectangle>;
std::vector<Type> shapes;
сортировка или partition через hold_alternative.
Не ?
источник

I

Ioann_V in supapro.cxx
То есть я знаю, что там гарантированно круг, но он спрятан за полиморфным типом
источник

SH

Serhii Herashchenko in supapro.cxx
Ioann_V
так я уже не знаю, что у меня там, круг или не круг - делать static_cast?
так а зачем тебе в рендере это знать??
источник

I

Ioann_V in supapro.cxx
Ioann_V
Соответственно, я делаю такую штуку:

class indexed_rdener_data_t
{
   uint32_t m_index;
   render_base*  m_render;
};
В рендере это не нужно, так в объекте то я храню вот это^
источник

I

Ioann_V in supapro.cxx
А в этом как видишь ли общий указатель хранится
источник

I

Ioann_V in supapro.cxx
Что мне теперь, для каждойфигуры, продублировать иерархию, что уже есть?
источник

I

Ioann_V in supapro.cxx
типа indexed_circle, indexed_rectangle? Или даже шаблоном...
источник