Ich habe zwei Klassen, die bis auf eine Methode fast identisch sind. Die Klassen haben den gleichen Datenteil und alle Mitgliedsfunktionen außer einer:
class A {
private:
double data;
public:
double calc(){
return data*data;
}
double especific(){
return 2.0*data;
}
}
und die zweite Klasse ist, abgesehen von der spezifischen Methode, identisch.
Insbesondere diese Mitgliedsfunktion benötigt alle Mitgliedsdaten zur Berechnung, so dass die Übergabe als Wert oder Referenz keine Option ist. Gibt es eine Möglichkeit, dies ohne eine Menge Code-Duplizierung zu implementieren? Entweder mit nur einer Klasse oder mit Vorlagen, aber nicht Vererbung (große Auswirkungen auf die Leistung).
Danke
EDITAR : Vielen Dank für die vielen Antworten. Die Strategie Muster kann in meinem Fall helfen, ich werde es versuchen und sehen, ob es funktioniert. Ich vermeide die virtuelle Vererbung wie die Pest, basierend auf einigen Tests, die ich in einem anderen Programm durchgeführt habe. Diese Routine wird überall aufgerufen werden, und die Leistung ist ein sehr wichtiger Faktor.