vorrei ereditare da una classe con il const
identificatore in questo modo:Eredita dalla classe const
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
};
mio compilatore mi dà evidentemente un errore per la parola chiave const
nella seconda dichiarazione di classi. Idealmente, vorrei evitare di dover creare una nuova classe ReadOnlyProperty
da cui ereditare ConstChild
.
Posso in qualche modo utilizzare la parola chiave const
per l'ereditarietà?
- In caso contrario, avete altre idee su come risolvere questo problema?
Si potrebbe dotare 'ConstChild' con un metodo factory come l'unico modo per costruisci le istanze rendendo il costruttore 'private'. Se restituisce i riferimenti 'const', verrai lì. –
Utilizzare l'aggregazione sull'ereditarietà. –
@ thomas-b-preusser Il punto di questo è di abilitare 'ConstChild' ad avere i metodi' const' e non 'const', cioè devono avere istanze di quella classe che sono costanti e non-costanti, mentre ' La proprietà di quella classe sarà sempre costante, cioè il metodo 'set' non può mai essere chiamato su di esso. –