c++ - How to combine template method pattern and multiple inheritance? -


can change code make work? possible combine template method pattern , multiple inheritance? seems convenient implement different algorithms in different classes. thank you.

class tbase { public:     virtual void do1() const = 0;     virtual void do2() const = 0;      void do() const {         do1();         do2();     } };  class tfirstalgorithm { public:     void do1() const {} };  class tsecondalgorithm { public:     void do2() const {} };  class talgorithm     : public tbase     , public tfirstalgorithm     , public tsecondalgorithm {}; 

fundamentally, problem tfirstalgorith::do1 isn't related tbase::do1 (and likewise tsecondalgorithm::do2 tbase::do2.

one possible way fix make them related:

class tbase { public:     virtual void do1() const = 0;     virtual void do2() const = 0;      void do() const {         do1();         do2();     } };  class tfirstalgorithm : public virtual tbase { public:     void do1() const { } };  class tsecondalgorithm : public virtual tbase { public:     void do2() const { } };  class talgorithm     : public tfirstalgorithm     , public tsecondalgorithm {}; 

Comments

Popular posts from this blog

How do you change vbulletin's home page to the forums instead of the default (CMS or Activity Stream)? -

c++ - Troubles when compiling phash program -