我可以更改此代码以使其工作吗?是否可以结合模板方法模式和多重继承?在不同的类中实现不同的算法似乎很方便。谢谢。
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
{};
最佳答案
从根本上说,您的问题是 TFirstAlgorithm::Do1
与 TBase::Do1
无关(同样 TSecondAlgorithm::Do2
到 TBase::Do2
。
解决这个问题的一种可能方法是使它们相关:
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
{};
关于c++ - 如何结合模板方法模式和多重继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10956107/