Mentre consideravo soluzioni "creative" (cioè bizzarre) a uno strano problema, una particolare idea scatenava la mia curiosità. Non è un'idea che probabilmente userò, ma mi piacerebbe comunque sapere se è legale secondo lo standard.Una classe membro può ereditare dal suo genitore?
Un semplice esempio potrebbe essere ...
class base_t
{
private:
// stuff
public:
// more stuff
class derived_t : public base_t // <--- weirdness here
{
// ...
};
};
Parte della stranezza - dal derived_t
eredita da base_t
che contiene derived_t
, sembra che derived_t
stessa contiene.
Quindi - si tratta di una cosa valida ma strana e spaventosa di un tipo simile a curiously recurring template pattern o è illegale?
EDIT - Dovrei forse dire che la ragione per cui ho pensato a questo stava cercando di evitare un inquinamento dello spazio dei nomi. Avere una classe come membro evita di introdurre un'altra classe globale, ma quella seconda classe deve condividere molto dal primo.
Se fosse solo una coppia di classi non sarebbe un problema, ma questo è per un generatore di codice.
Basta pensarci. Pensa a una scatola che contiene se stessa ... –
Da una prospettiva OOP questo è per lo meno inutile ... –
@Bruno: Non necessariamente. –