У меня есть этот абстрактный класс в C++:C++ Автоматически вызывать методы проверки из родительского абстрактного класса в реализованных чистых виртуальных методах?
class A {
public:
A(int size);
virtual void doSomething(int inputSize) = 0;
protected:
virtual bool checkSize(int inputSize);
private:
int size;
}
A::A(int size) : size(size){}
bool A::checkSize(int inputSize) { return size == inputSize; }
Теперь, что я хочу, чтобы гарантировать, что для каждого класса B
, полученного из A
doSomething
начинается так:
class B : public A{
void doSomething(int inputSize);
}
void B::doSomething(int inputSize){
if(!checkSize(inputSize)){
std::cerr<<"wrong inputSize!"<<std::endl;
return;
}
//do something...
}
Как я могу гарантировать, что каждый производный класс от A
реализует doSomething
, начиная с этого пути?
Существует а [Design Pattern Метод шаблона] (https://sourcemaking.com/design_patterns/template_method) – sameerkn