LINUX.ORG.RU

История изменений

Исправление 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();