我使用库中的 A 类,并希望通过自己的 B 类为其添加一些功能。B 类的用户应该从它派生,就好像他从 A 类派生一样。
class A {
public:
virtual void func1()=0;
virtual void func2()=0;
...
}
class B: public A {
public:
virtual void func1() {...}
}
因此,如果有人创建了一个从 B 派生的 C 类,他应该必须实现 func2:
class C: public B {
public:
virtual void func2() {...}
}
对我的应用程序来说非常重要的是,C 类不会覆盖 func1,从而消除了 B::func1()。
有没有办法禁止 B 的所有子类覆盖这个虚函数?如果不是在普通的 C++ 中,当这个函数被覆盖时,boost MPL 中是否有一些东西会引发编译器错误?