C++ C++;在实现的纯虚拟方法中自动从父抽象类调用检查方法?
我有一个C++的抽象类:C++ C++;在实现的纯虚拟方法中自动从父抽象类调用检查方法?,c++,abstract-class,virtual,pure-virtual,C++,Abstract Class,Virtual,Pure Virtual,我有一个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 == i
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; }
现在,我想保证的是,对于从A
派生的每个类B
,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...
}
B类:公共A类{
无效剂量测量(int输入大小);
}
void B::doSomething(int inputSize){
如果(!checkSize(inputSize)){
std::cerr您将剂量测量分为两部分:
class A {
public:
void doSomething(int inputSize) {
if (!checkSize(inputSize)){
std::cerr << "wrong inputSize!" << std::endl;
return;
}
doSomething_(inputSize);
}
protected:
virtual void doSomething_(int) = 0;
};
A类{
公众:
void doSomething(int inputSize){
如果(!checkSize(inputSize)){
std::cerr您将剂量测量分为两部分:
class A {
public:
void doSomething(int inputSize) {
if (!checkSize(inputSize)){
std::cerr << "wrong inputSize!" << std::endl;
return;
}
doSomething_(inputSize);
}
protected:
virtual void doSomething_(int) = 0;
};
A类{
公众:
void doSomething(int inputSize){
如果(!checkSize(inputSize)){
std::cerr您可以直接执行签入A
,例如:
class A {
public:
A(int size);
virtual ~A() = default;
void doSomething(int inputSize)
{
if (!checkSize(inputSize)){
std::cerr<<"wrong inputSize!"<<std::endl;
return;
}
doSomethingWithChekedSize(inputSize);
}
protected:
virtual void doSomethingWithChekedSize(int inputSize) = 0;
virtual bool checkSize(int inputSize);
private:
int size;
};
A类{
公众:
A(整数大小);
virtual~A()=默认值;
void doSomething(int inputSize)
{
如果(!checkSize(inputSize)){
std::cerr您可以直接执行签入A
,例如:
class A {
public:
A(int size);
virtual ~A() = default;
void doSomething(int inputSize)
{
if (!checkSize(inputSize)){
std::cerr<<"wrong inputSize!"<<std::endl;
return;
}
doSomethingWithChekedSize(inputSize);
}
protected:
virtual void doSomethingWithChekedSize(int inputSize) = 0;
virtual bool checkSize(int inputSize);
private:
int size;
};
A类{
公众:
A(整数大小);
virtual~A()=默认值;
void doSomething(int inputSize)
{
如果(!checkSize(inputSize)){
这里有一个有一个