Я пытаюсь создать что-то вроде следующего, используя C++:Где я могу хранить функцию, которая действует на массив объектов?
У меня есть класс с именем частица, которая сохранит положение, скорость каждой частицы. Кроме того, функция-член обновляет положение частицы с использованием данных скорости.
Я также пытаюсь написать функцию, которая обнаружит столкновение частиц с границами поля. Для этого эта функция нуждается в доступе к позиции и скорости каждой частицы. Таким образом, функция должна принимать целый массив частиц в качестве параметра. Однако эта функция не может существовать как членная функция класса частиц, потому что тогда она не будет иметь доступа ко всем частицам.
Вопрос: Где я могу включить функцию обнаружения столкновений, чтобы она была расширяемой частью класса частиц?
Я подумал о том, чтобы просто написать эту функцию внутри моего файла main.cpp, но я не имею ни малейшего понятия, придерживается ли это правил ООП. В идеале могут быть и другие функции, которые также действуют на массив частиц.
Независимо от того, кто «владеет», частицы, вероятно, будут местом для обнаружения столкновения частиц. В этом случае все, что принадлежит списку частиц и отвечает за их управление. (и +1 для большинства образцов вашего лица, которые вы пытаетесь сделать, я видел в вопросе в течение длительного времени). – WhozCraig
Расширяемость в каком направлении? «Очевидным» ответом является статическая функция-член, но это может зависеть от роли этого класса 'particle' (в основном, он предназначен для использования в качестве базового класса или нет) и того, как вы хотите представлять ограничительную рамку. Также имейте в виду, что большое количество кода на C++ (возможно, большинство) и почти всех стандартных библиотек C++ разработаны * без * указаний по ООП. C++ допускает другие парадигмы программирования, чем просто ООП. –
Также +1 для GIF! – Keith