gpt4 book ai didi

C++在实现的纯虚拟方法中自动从父抽象类调用检查方法?

转载 作者:太空宇宙 更新时间:2023-11-04 16:02:26 25 4
gpt4 key购买 nike

我在 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; }

现在,我要保证的是,对于从 A doSomething 派生的每个类 B 都是这样开始的:

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

最佳答案

您将 doSomething 分成两部分:

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;
};

而在 B 中,您只需实现 doSomething_

关于C++在实现的纯虚拟方法中自动从父抽象类调用检查方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41184339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com