c++中如何在不改变代码的情况下不用if判断的情况下增加一个类
在C++中,可以使用函数指针或函数对象来实现在不改变代码的情况下增加一个类的功能,而不使用if判断。
首先,定义一个基类,其中包含一个纯虚函数,用于实现增加类的功能。
class Base {
public:
virtual void execute() = 0;
};
然后,定义一个可供选择的类,继承自基类,并实现纯虚函数。
class ClassA : public Base {
public:
void execute() override {
// 执行ClassA的操作
}
};
接下来,定义一个包含指向基类的指针的类,用于动态指向不同的类对象。
class ClassWrapper {
private:
Base* obj; // 指向基类的指针
public:
ClassWrapper() : obj(nullptr) {}
void setClass(Base* o) {
obj = o;
}
void executeClass() {
if (obj != nullptr) {
obj->execute();
}
}
};
最后,在需要增加类的地方,可以通过创建不同的类对象,并将其传递给ClassWrapper类的setClass函数来实现功能的扩展。
int main() {
ClassWrapper wrapper;
// 创建ClassA的对象
ClassA classA;
// 将ClassA对象传递给ClassWrapper类
wrapper.setClass(&classA);
// 执行ClassA的操作
wrapper.executeClass();
return 0;
}
这样,通过动态指向不同的类对象,就能够实现在不改变代码的情况下增加一个类的功能,而不使用if判断。
原文地址: https://www.cveoy.top/t/topic/i7OM 著作权归作者所有。请勿转载和采集!