Explizite statische Elementinstanziierung für Vorlagen in einer abgeleiteten Klasse
Ich versuche, eine Vorlagenklasse mit einem statischen Member zu implementieren. Klassen, die von der Vorlagenklasse abgeleitet sind, müssen instanziiert werden, ohne dass zusätzlicher Code geschrieben werden muss.
Hier ist mein naiver (und nicht erfolgreicher) Ansatz:
Singleton.h:
template <class T> class Singleton {
protected:
Singleton();
static T instance_;
}
// explicit instantiation of 'instance_' ???,
// where 'instance_' is an instance of the derived class
template <class T> T Singleton<T>::instance_;
ConcreteA.h:
class ConcreteA : public Singleton<ConcreteA> {
public:
ConcreteA();
void foo();
}
Haupt c
int main() {
// an instance of ConcreteA should have been created (no extra code)!!!
return 0;
}
ibt es eine Möglichkeit, die Instanziierung von @ zu erzwingeConcreteA
von nur ableitenConcreteA
vonSingleton
, ohne zusätzlichen Instantiierungscode zu schreiben?
A Schmutzige Problemumgehung soll eine Methode auf @ aufrufinstance_
in demConcreteA
Konstruktor, zum Beispiel:
ConcreteA.c
ConcrereA::ConcreteA { instance_.foo(); }
ibt es bessere Workaround