Затем вы можете поиграть с этой концепцией в С++ 11
template<typename... Mixins>
class Mixer: public Mixins...
{
public:
Mixer(const Mixins&... mixins): Mixins(mixins)... {}
};
чтобы использовать его следующим образом:
int main() {
Mixer<Person,Singer> dylan{{"Dylan"} , {"Like a Rolling Stone", 1965}};
dylan.name();
dylan.song();
}
Ответ 2
Помимо статического подхода, предложенного emesx, я знаком с хотя бы одной библиотекой С++, которая позволяет создавать объекты из миксинов во время выполнения. Вы жертвуете некоторыми вещами, как естественный синтаксис С++ при определении и вызове методов, но вы получаете другие преимущества, такие как значительно уменьшенные физические зависимости в коде и большая гибкость во время выполнения. Его истоки внедрены в системы сущностные компоненты, которые довольно популярны в индустрии разработки игр, и реализация довольно эффективна.