Я создаю небольшую игру на C++ (с SFML, но это не имеет значения по большей части), и я меняю код, чтобы сделать его более многоразовым. Я хочу создать метод, который перемещает кучу фигур, которые хранятся в массиве.Можете ли вы передать подкласс в качестве аргумента функции с параметром суперкласса? C++
Скажем, у нас есть класс с именем Shape, а другой, его подкласс, называемый Прямоугольник. Я хочу, чтобы функция работала для любая форма. Это возможно? Я думал, что смогу сделать что-то похожее на то, что вы видите ниже, но он разбивает игру, если я не изменю первый параметр, чтобы взять массив Rectangles.
void shift_shapes(Shape *shapes, int num_shapes, int x_offset, int y_offset)
{
for (int i = 0; i < num_shapes; i++)
shapes[i].move(x_offset, y_offset);
}
Rectangle rects[100];
// *Add 100 rectangles*
shift_shapes(rects, 100, 10, 5);
Спасибо за помощь!
http://www.parashift.com/c++-faq-lite/array-derived-vs-base.html – catscradle