Size: a a a

2021 February 16

I

Ioann_V in supapro.cxx
Ioann_V
class indexed_rdener_data_t
{
   uint32_t m_index;
   std::unique_ptr<render_base> m_render;
};

class some_circle_object
{
   indexed_rdener_data_t m_circle_renderer; - инициализирую поле m_render всегда кругом;
   
   change_radius()
   {
       как тут поменять радиус m_circle_renderer?
   }
};
Вот тут я храню m_circle_renderer как render_component
источник

I

Ioann_V in supapro.cxx
Но с учетом Полиморфизма
источник

I

Ioann_V in supapro.cxx
(полиморфизм и наследование же, помогают убрать дублирование кода)
источник

I

Ioann_V in supapro.cxx
вот где-то мне нужно хранить индекс рендера(для сортировки) и вот сам рендер
источник

d

d7d1cd in supapro.cxx
Ofee
Сейчас стандартом, по сути, закреплена одна конкретная реализация с двумя перегрузками. Я бы просто взял её из libstdc++. Всё, что остаётся имплементатору сверх стандарта — написать тело этим перегрузкам, а там из вариантов остаётся только написать уже привычный static_cast<Arg&&>(arg);
Взял код одной из перегрузок, заменил noexcept на thow(), так как мой компиль не умеет в noexcept. В результате ошибка (в коде показана комментарием). std::remove_reference у меня в библиотеке есть. Могу прислать код нужной перегрузки.
Посоветуйте что-то.

https://godbolt.org/z/odno6P
источник

I

Ioann_V in supapro.cxx
Ioann_V
вот где-то мне нужно хранить индекс рендера(для сортировки) и вот сам рендер
И вот вся проблема в том, что если я хочу работать с ним как с кругом, зная что там гарантированно круг - мне придется статик кастить, вопрос мой в том, как обойтись без SC. Сделать наследование?
источник

SH

Serhii Herashchenko in supapro.cxx
Ioann_V
ДА у меня так и есть. Вот собственно в том коде выше
нет, у тебя абсолютно не так
источник

I

Ioann_V in supapro.cxx
Serhii Herashchenko
нет, у тебя абсолютно не так
Хорошо, если не сложно опять же, скинь примером как сделать ТАК.
источник

I

Ioann_V in supapro.cxx
потому что это по крайней мере, та самая идея, которую я преследую
источник

I

Ioann_V in supapro.cxx
То есть мне что нужно - рендер компонент, который внутри хранит индекс сортировки и фигуру
источник

I

Ioann_V in supapro.cxx
с ее цветом
источник

I

Ioann_V in supapro.cxx
При этом с этим компонентом, мы должны уметь работать с индексом, вне зависимости от того, какая внутри фигура
источник

I

Ioann_V in supapro.cxx
Потому что индекс он для сортировки
источник

SH

Serhii Herashchenko in supapro.cxx
Ioann_V
с ее цветом
base_component->mesh_component->circle_mesh_component

mesh_component
{
   index;
   virtual render(renderer);
}

circle_mesh_component
{
   radius;
   points_count;
   render(renderer)
   {
       points = calculate_points_parametric();
       renderer->draw_primitives(RENDER_PRIMITIVE_LINES, points, index);
   }
}

entity
{
   vector<base_component> components;
}

render_system
{
   renderer;
   render_entity(entity)
   {
       mesh = entity.getComponent<MeshComponent>();
       mesh.render(renderer);
   }
}


вот так на псевдо псевдо коде
источник

SH

Serhii Herashchenko in supapro.cxx
А вообще
источник

I

Ioann_V in supapro.cxx
entity.getComponent<MeshComponent>();


Вот это как раз Локатор Служб, вроде как.
источник

SH

Serhii Herashchenko in supapro.cxx
Ioann_V
entity.getComponent<MeshComponent>();


Вот это как раз Локатор Служб, вроде как.
Локатор служб?)))
источник

SH

Serhii Herashchenko in supapro.cxx
Никогда про такое не слышал
источник

I

Ioann_V in supapro.cxx
Serhii Herashchenko
Локатор служб?)))
Ну типа того, обычно это так делают.
источник

SH

Serhii Herashchenko in supapro.cxx
Ioann_V
Ну типа того, обычно это так делают.
Так везде делают, но этот термин впервые вижу
источник