При моделировании объекта с дочерними элементами обычно включают дочерние элементы посредством композиции в качестве члена родительского класса. Однако иногда детям нужно что-то сказать родителю, им нужно вызвать функцию родителя. Как это можно сделать с помощью C ++? Некоторые варианты:
Сделайте родительский класс глобальным, поэтому дочерние объекты смогут вызывать функции-члены родительского объекта.
Вставьте родительский объект как указатель или ссылку в каждый дочерний объект. Затем, когда ребенку нужно что-то сказать родительскому объекту, он всегда может сделать это, потому что у него есть переменная-член, которую он может использовать.
Каковы другие способы сделать это? Есть ли общий шаблон дизайна или название для такого рода вещей?
Обратите внимание, что мне интересны идеи и решения в C ++, потому что детали будут отличаться в других объектно-ориентированных языках. Например, пункт 2 выше упоминает «указатели или ссылки», и оба возможны только в C ++. C ++ имеет языковые функции, которых нет в других языках, поэтому реализации решения проблемы потенциально могут включать эти языковые функции, что отличает решение от того, что кто-то может придумать на другом языке.
delegate
?