[c++] Überschreiben geerbter methoden verbieten

#2825692
Lesenswert?

Hi,
Ich habe eine Basisklasse:
1
class Foo
2
{
3
public:
4
 virtual void process() = 0;
5
}

nun ist es notwendig das process zu unterteilen und eine neue 
Basisklasse bereitzustellen.
1
class MultiFoo: public Foo
2
{
3
public:
4
 virtual void processA(){};
5
 virtual void processB(){};
6
private:
7
 virtual void process()
8
 {
9
   if(rand()%2){
10
     processA();
11
   }else{
12
     processB();
13
   }
14
 };
15
}
die Klassen, die von MultiFoo ableiten sollen aus naheliegenden Gründen 
gezwungen werden, die process unangetastet zu lassen und mindestens eine 
der beiden processA oder processB zu implementieren.

folgendes soll also verhindert werden:
1
class Bar: public MultiFoo
2
{
3
public: 
4
 void process(){  // hier hätte ich gerne einen compiler fehler.
5
   cout << 42;
6
 }
7
  
8
}

ein verschieben von process nach private brachte leider nicht den 
erhofften Erfolg. private von Foo erben kann ich leider aus anderen 
Gründen nicht.

gibts sonst noch eine Möglichkeit, außer auf Goodwill der Anwender zu 
hoffen, was immer kein sehr befriedigender Ansatz ist.

Gruß
Vlad

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren