gpt4 book ai didi

c++ - 依赖构造函数参数的类方法的特殊实现

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:50 24 4
gpt4 key购买 nike

我有一个类:

    class MyClass {
int param_;
void MyMethod();
public:
MyClass(int param) : param_(param) {};
}

void MyClass::MyMethod() {
if (param_ == 1) {
std::cout << "1" << std::endl;
/* */
} else {
std::cout << "not 1" << std::endl;
/* */
}
}

我想用另一个具有相同定义但不同实现的类 MyClass1 来处理该“if”语句。

我不希望用户携带这种差异。是否可以用相同的方式初始化不同类的对象?

MyClass a(5);
MyClass b(1);
a.MyMethod(); // not 1
b.MyMethod(); // 1

我不想使用 if,因为可能有很多这样的方法具有不同的实现。

最佳答案

听起来像是继承和工厂方法的工作

class Base
{
public:
virtual void MyMethod() = 0;
}

class Class1: public Base
{
public:
virtual void MyMethod(){// implement 1}
}
class ClassNot1: public Base // or public Class1, if you have some implementation in Class1 you want use in this class
{
public:
virtual void MyMethod(){// implement not 1}
}

Base* SomeFactoryClass::GetBase(int param)
{
if (param == 1)
return new Class1();
else
return new ClassNot1();
}

关于c++ - 依赖构造函数参数的类方法的特殊实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33649710/

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