我有一个类:
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/