I
Size: a a a
I
DP
I
D
class shapeСобственно в классе выше, композиция или наследование? Если композиция, то я там могу хранить любой shape, но что делать, если мне нужно в дальнейшем иметь класс, который всегда хранит данные круга? Я могу туда в класс передать круг, да, но тогда затем, при работ с этим классом, делать static_cast моего shape. Все верно или что не так?
{
};
class circle : public shape
{
};
class rect : public shape
{
};
class render_base
{
};
class render_shape : public render_base
{
// Вот тут я могу внутри композиторовать или агрегировать любую фигуру или могу сделать наследование для каждой фигуры от этого класса, в нем я храню скажем вот что(помимо самой фигуры, если композируемся - агрегируемся):
shape_color;
};
AF
class shapeСобственно в классе выше, композиция или наследование? Если композиция, то я там могу хранить любой shape, но что делать, если мне нужно в дальнейшем иметь класс, который всегда хранит данные круга? Я могу туда в класс передать круг, да, но тогда затем, при работ с этим классом, делать static_cast моего shape. Все верно или что не так?
{
};
class circle : public shape
{
};
class rect : public shape
{
};
class render_base
{
};
class render_shape : public render_base
{
// Вот тут я могу внутри композиторовать или агрегировать любую фигуру или могу сделать наследование для каждой фигуры от этого класса, в нем я храню скажем вот что(помимо самой фигуры, если композируемся - агрегируемся):
shape_color;
};
AF
SH
class shapeСобственно в классе выше, композиция или наследование? Если композиция, то я там могу хранить любой shape, но что делать, если мне нужно в дальнейшем иметь класс, который всегда хранит данные круга? Я могу туда в класс передать круг, да, но тогда затем, при работ с этим классом, делать static_cast моего shape. Все верно или что не так?
{
};
class circle : public shape
{
};
class rect : public shape
{
};
class render_base
{
};
class render_shape : public render_base
{
// Вот тут я могу внутри композиторовать или агрегировать любую фигуру или могу сделать наследование для каждой фигуры от этого класса, в нем я храню скажем вот что(помимо самой фигуры, если композируемся - агрегируемся):
shape_color;
};
I
AF
AF
AF
SH
class render_shape;
class shape
{
public:
virtual ~shape();
virtual void render(render_shape* render) = 0;
}
class circle : public shape
{
...
void render(render_shape* render) override
{
render->render_circle(*this); // or any other way to draw circle
}
}
AF
I
class render_shape;
class shape
{
public:
virtual ~shape();
virtual void render(render_shape* render) = 0;
}
class circle : public shape
{
...
void render(render_shape* render) override
{
render->render_circle(*this); // or any other way to draw circle
}
}
AF
SH
class render_shape;
class shape
{
public:
virtual ~shape();
virtual void render(render_shape* render) = 0;
}
class circle : public shape
{
...
void render(render_shape* render) override
{
render->render_circle(*this); // or any other way to draw circle
}
}
class render_shape : public render_base
{
...
void render(shape& shape)
{
shape.render(this);
}
}
I
SH
SH
SH