이 코드를 변경하여 작동되게 할 수 있습니까? 템플릿 메서드 패턴과 다중 상속을 결합 할 수 있습니까? 서로 다른 클래스에서 서로 다른 알고리즘을 구현하는 것이 매우 편리한 것처럼 보입니다. 고맙습니다.템플릿 방법 패턴과 다중 상속을 결합하는 방법은 무엇입니까?
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
{};
대단히 감사합니다. 해결책은 멋지다 – typedef
Btw, 여기에 문제가있다 : 클래스 TFirstAlgorithm과 TSecondAlgorithm의 객체를 생성 할 수 없다. 이것은 우리가 별다른 테스트를 할 수없는 아주 좋은 beacause가 아닙니다. – typedef
@ user1058588 : 예, 클래스는 인스턴스화되기 전에 기본 클래스의 모든 순수 가상 함수를 정의해야합니다. 해결 방법이 있습니다 (대부분 다른 클래스를 NOP로 정의하는 다른 클래스를 소개하지만) 특히 깨끗한 것은 없습니다. –