Давайте я еще вывешу свои размышления (даже практически предлагаемый механизм) из соседней ветки.
ЦитатаДа, новые идеи всегда с трудом находят понимание у современников
Что такое множественное наследование, ты понимаешь.
Теперь переверни картинку вверх ногами. Что получилось?
Это множественные наследники.
В предлагаемой реализации:
Цитата:класс А
{
virtual test1(Msg("A::test1"));
virtual test2(Msg("A::test2"));
};
класс mix1
{
virtual test1(Msg("mix1::test1"));
}
класс mix2
{
virtual test2(Msg("mix2::test2"));
}
Теперь замещаем методы test1 и test2 методами классов mix1 и mix2:
Цитата:класс = СоздатьКласс("А"); // это не объект, это шаблон класса, который мы строим
класс.ДобавитьПодкласс("mix1"); // downmix
класс.ДобавитьПодкласс("mix2");
Сам = класс.СоздатьОбъект(параметры конструктора); // создание объекта класса А с замещенными аспектами
Сам.test1();
Сам.test2();
Поскольку оба методы переопределены, причем разными подклассами, результат будет:
Цитата:mix1::test1
mix2::test2
Т.е. я раздумываю, не строить ли шаблон класса динамически, добавляя суперклассы и наследников, которые выполняют некий downmix, заменяя функционал суперкласса.
Но заменяют они реализацию не у себя, а в том классе, который я им указываю.
И создаю я объекты не наследников, а сразу объекты суперкласса, но с уже переопределенными аспектами поведения.
Моя задача решается идеально, но это не ООП, так ведь?
Вот такая тема.
Но, поскольку я не могу найти реализации и обоснования подобных механизмов у классиков - пребываю в глубокой задумчивости.