我有以下代码,
File: Interface.h
class Interface {
public:
virtual void method1() = 0;
};
File: Intermediate.h
class Intermediate : public Interface {
};
File: A.h
class A : public Intermediate {
public:
void methodSpecificToA() {
cout << "methodSpecificToA in class A";
}
void method1() {
cout << "implemented method1 in class A";
}
};
File: B.h
class B : public Intermediate {
public:
void methdo1() {
cout << "method1 is called in class B";
}
};
int main() {
Interface* i_ptr = new A();
i_ptr->method1();
return 0;
}
我的要求是,我想使用i_ptr调用函数methodSpecificToA()。但是我不能这样做,因为methodSpecificToA不是纯虚拟的,也不是在接口类中定义的。
那么如何在不向Interface类编写默认'methodSpecificToA()'的情况下做到这一点呢?
如果我将'methodSpecificToA()'当作纯虚拟的,则类B被迫实现了意外的'methodSpecificToA()'。
什么是最好的方法?