추상이 아닌 경우 기본 클래스 메서드를 호출하는 방법. 추상이 아닌 경우 기본 클래스 메서드 호출
class WithAbstMethod {
public:
virtual void do() = 0;
}
class WithImplMethod : public WithAbstMethod {
public:
virtual void do() {
// do something
}
}
template<typename BaseT>
class DerivedClass : BaseT {
public:
virtual void do() {
BaseT::do(); // here is a question. How to modify code, so that do() is called if it is not abstract?
// do something
}
}
void main() {
DerivedClass<WithAbstMethod> d1;
d1.do(); // only DerivedClass::do() should be called
DerivedClass<WithImplMethod> d2;
d2.do(); // both WithImplMethod::do() and DerivedClass::do() should be called
}
은 많은 코드없이 컴파일 타임이 사용하는 템플릿을 할 수 있나요 (인스턴스화 DerivedClass : BaseT 연결 :: DO() 호출을하고 BaseT 연결 유형에 따라없이 할() 메소드)? 분명히 WithAbstMethod 클래스에서 구현을 제공하는 것은 옵션이 아닙니다. 위의 코드는 의사 코드이므로 사소한 오류가있을 수 있습니다.
do는 C++의 예약어입니다. –