Согласно этой статье :
Конкатенативное наследование - это процесс объединения свойств
одного или нескольких исходных объектов в новый целевой объект.
Мы говорим о наследовании классов?
Это основной способ, которым публичное наследование работает в C ++. Благодаря множественному наследованию вы можете даже комбинировать несколько базовых классов.
Однако могут существовать некоторые ограничения (например, необходимо разрешать конфликты имен между различными источниками, в зависимости от варианта использования вам могут потребоваться виртуальные функции, а также может возникнуть необходимость явно создавать комбинированные конструкторы).
Или подразумевается наследование от созданных объектов?
Если речь идет об объектах, а не о классах, история другая. Вы не можете клонировать и комбинировать объекты случайного типа друг с другом, так как C ++ является строго типизированным языком.
Но сначала давайте исправим вводящую в заблуждение формулировку. Речь идет не о конкатенативном наследовании, поскольку наследование предназначено для классов. Это скорее «конкатенационное прототипирование», так как вы создаете новые объекты, принимая значения и поведение существующих объектов.
Чтобы реализовать какое-то «конкатенативное прототипирование» в C ++, вам необходимо спроектировать его, основываясь на принципе компоновки, используя набор хорошо определенных «конкатенируемых» (т.е. компонуемых) базовых классов. Этого можно достичь, используя шаблон проектирования прототипа вместе с архитектурой entity-component-system .
Какова цель
В настоящее время вы ищете такую конструкцию, возможно, потому, что вы интенсивно ее использовали в динамически типизированном языке.
Имейте в виду популярную цитату (Марк Твен? Маслоу?):
Если у вас в руке молоток, все проблемы выглядят как гвозди
Итак, вопрос в том, что вы действительно ищете и какую проблему вы намерены решить. ИМХО, нельзя исключать, что другие идиомы могут быть более подходящими в мире C ++ для достижения той же цели.