C ++ запрещает перезапись виртуальной функции

Я использую класс A из библиотеки и хочу добавить к нему некоторые функции через собственный класс B . Пользователь класса B должен быть производным от него, как если бы он был производным от класса A.

class A {
    public:
        virtual void func1()=0;
        virtual void func2()=0;
        ...
}
class B: public A {
    public:
        virtual void func1() {...}
}

Поэтому, если кто-то создает класс C, производный от B, он должен будет реализовать func2:

class C: public B {
    public:
        virtual void func2() {...}
}

Это очень важно для моего приложения, этот класс C не перезаписывает func1, исключая B :: func1 ().

Есть ли способ запретить перезапись этой виртуальной функции для всех дочерних классов B? Если не в простом C ++, есть ли что-то в ускоренном MPL, которое вызывает ошибку компилятора при перезаписи этой функции?

8
задан Heinzi 24 August 2011 в 14:42
поделиться