История изменений
Исправление alysnix, (текущая версия) :
В классических ООП языках это потребовало бы дичи типа наследования от вектора, за что на кодревью тебе бы дали по башке и заставили бы читать GoF и делать по-человечески.
наследование от вектора это не дичь, если он является классом. какая разница от чего наследовать?
но то, что ты говоришь, это плюсовый паттерн проектирования -декоратор или визитор. кстати более удобный, чем в русте.
пишется так
class OldClass {
public:
void fun0();
}
///класс реализующий две новых функции, используя класс OldClass
class Decorator {
OldClass &_ref;
public:
Decorator(OldCLass& fref): _ref(fref){... }
void fun1() { _ref.fun0(); }
void fun2() { }
}
использование:
OldClass val_old; ///обьект старого класса
Decorator(val_old).fun1(); ///на лету создаеи декоратор и тут же вызываем функцию
или
Decorator decor(val_old); ///создали обьект декорирующий val_old
decor.fun1(); ///вызываем его методы сколько надо раз
decor.fun2();
Исходная версия alysnix, :
В классических ООП языках это потребовало бы дичи типа наследования от вектора, за что на кодревью тебе бы дали по башке и заставили бы читать GoF и делать по-человечески.
наследование от вектора это не дичь, если он является классом. какая разница от чего наследовать?
но то, что ты говоришь, это плюсовый паттерн проектирования -декоратор или визитор. кстати более удобный, чем в русте.
пишется так
class OldClass {
public:
void fun0();
}
///класс реализующий две новых функции, используя класс OldClass
class Decorator {
OldClass _ref;
public:
Decorator(OldCLass& fref): _ref(fref){... }
void fun1() { _ref.fun0(); }
void fun2() { }
}
использование:
OldClass val_old; ///обьект старого класса
Decorator(val_old).fun1(); ///на лету создаеи декоратор и тут же вызываем функцию
или
Decorator decor(val_old); ///создали обьект декорирующий val_old
decor.fun1(); ///вызываем его методы сколько надо раз
decor.fun2();