У меня есть три класса формы Circle
, Square
, ConvexPolygon
, и у меня есть функции
bool ShapesIntersect(const Circle& s1, const Circle& s2);
bool ShapesIntersect(const Circle& s1, const Square& s2);
// ... and the other 7 combinations
Я бы хотел полиморфную функцию вроде
Matrix<bool> ComputeShapeIntersectionMatrix(
const vector<Shape>& shapes1,
const vector<Shape>& shapes2);
, который вызывает описанные выше специфические для формы методы для заполнения матрицы пересечений.
Я думаю, что это невозможно сделать в c ++, но я в порядке с любым другим решением, если я могу добавить новый тип фигуры, не изменяя код, который вычисляет матрицу пересечений.