Iniezione di campi statici in sottoclassi

0

Supponiamo di avere una classe C ++ con alcuni campi con durata di archiviazione statica, chiamiamola classe A.

C'è un modo per usare l'ereditarietà per "iniettare" questi campi statici in classi che derivano dalla classe A? Vale a dire, se la classe B e la classe C derivano da A, B e C avranno gli stessi campi statici della classe base A, condivisi con tutte le altre istanze di B e C, ma le operazioni su questi campi all'interno di istanze di B e C sarà distinto rispetto alle rispettive sottoclassi e non si influenzeranno a vicenda.

    
posta Bitrex 06.01.2017 - 00:17
fonte

1 risposta

4

No, e dalla visione teorica di come funziona l'ereditarietà, non avrebbe senso.

Tuttavia, se si utilizza l'ereditarietà solo a fini di implementazione, il modello della classe base sulla classe derivata lo farebbe funzionare, ma le varie classi non condividono più un antenato comune.

template <typename Derived>
class A { protected: static int count; };
class B : private A<B> { public: B() { ++count; } };
class C : private A<C> { public: C() { ++count; } };
    
risposta data 06.01.2017 - 00:24
fonte

Leggi altre domande sui tag