Ich mag aus einer Klasse mit den const
Spezifizierer wie diese erben:vererben const Klasse
class Property
{
int get() const;
void set(int a);
};
class ConstChild : public const Property
{
// Can never call A::set() with this class, even if
// the instantiation of this class is not const
};
class NonConstChild : public Property
{
// Can call both A::set() and A::get() depending on
// the constness of instantiation of this class
};
Mein Compiler gibt mir offensichtlich einen Fehler für das const
Schlüsselwort in der zweiten Klassen Erklärung. Idealerweise möchte ich vermeiden, eine neue Klasse ReadOnlyProperty
zu erstellen, von der ConstChild
erben würde.
Kann ich irgendwie das Schlüsselwort const
für die Vererbung verwenden?
- Wenn nicht, haben Sie weitere Ideen, wie Sie dieses Problem lösen können?
Sie 'ConstChild' mit einem Factory-Methode als die einzige Möglichkeit ausstatten könnte Konstruieren Sie Instanzen, indem Sie den Konstruktor 'privat' machen. Wenn es "const" Referenzen zurückgibt, wären Sie da. –
Verwenden Sie Aggregation über Vererbung. –
@ thomas-b-preusser Der Sinn davon ist, zu ermöglichen, dass 'ConstChild'' const'- und non-const'-Methoden selbst hat, dh Instantiierungen dieser Klasse haben müssen, die konstant und nicht konstant sind, während die ' Die Eigenschaft '' ''dieser Klasse wird immer konstant sein, dh die' set'-Methode kann nicht immer aufgerufen werden. –