Ich mache etwas, das wahrscheinlich albern ist, aber es wäre schön, wenn es funktioniert.Gemeinsame statische Mitglieder zwischen Template-Instanziierungen? (unmöglich?)
Ich versuche, Typen so zu spezialisieren, dass ich meine eigene Lookup-Struktur brauche, die im Wesentlichen global ist (aber idealerweise als Klassenvariable gekapselt ist), aber ich möchte, dass die Objekte typsicher sind, also parametrisiert werden.
Folglich habe ich im Wesentlichen
template<class T, int N>
class SpecialArray
{
//...
private:
static map<string, internal_t> lookupTable
}
und für welchen Gründen auch immer, ich hätte nicht gedacht, so lange, bis ich LookupTable zu initialisieren ging, als ich
sagentemplate <class T, int N>
SpecialArray<T,N>::lookupTable;
gibt es Gehen zu viele verschiedene lookupTable
s herumlaufen an den verschiedenen Instanziierungen SpecialArray
angeschlossen.
Ich vermute, es kann nur ein Wunschtraum sein und die richtige Antwort ist es nur ein separates globales Singleton-Objekt zu machen, aber gibt es sowieso, um es so zu machen, dass es nur einen lookupTable
für alle SpecialArray
s gibt?
Wie in C++ in meinem Kopf (was nicht wirklich C++ ist), würde dies so etwas wie
template <class T, int N>
SpecialArray<*,*>::lookupTable;
... gehen, aber leider GCC die C++ in meinem Kopf
nicht kompilieren Gibt es einen tatsächlichen Weg, um zu bekommen, was ich will (irgendwo in C++ 0x-Land oder so)? Ich werde wahrscheinlich auf dieses Problem auch mit einigen statischen Methoden stoßen, die diese Nachschlagetabelle manipulieren (die Typen oder Ns nicht verfolgt).
... Entschuldigung, wenn das keinen Sinn ergeben würde.
Vielen Dank im Voraus für jede Hilfe oder Sympathie, die Sie machen können.
Was ist 'internal_t'? –
Verwandte Frage: [C++ statische Vorlage Mitglied, eine Instanz für jede Vorlage Typ?] (Http://stackoverflow.com/questions/2220975/c-static-template-member-one-instance-for-each-template-type) –