ich einen Haken heute getroffen ... Ich wollte eine kleine Templat-Helfer-Klasse definierensizeof() Und Vorlage Argument In Ctor/Non-Ctor Funktion
template<class T>
CMyClass
{
public :
CMyClass() { size_t iSize = sizeof(T); } // Allowed.
size_t GetElementSize() const { return sizeof(T); } // C2027.
};
und natürlich wäre es nicht kompilieren (C2027). Meine Frage war, ist es möglich, die Größe des Typs zu bekommen? Der Grund, warum ich das brauche, ist, dass der Typ, mit dem das Objekt erstellt wird, eine Anzahl unterschiedlich definierter Strukturen sein kann. Daher muss ich zur Laufzeit die Größe der verwendeten Struktur ermitteln.
Durch ein schnelles bisschen experimentieren, weil ich stur bin, scheint es, dass ich sizeof (T) in der Ctor verwenden kann, aber nicht in der Nicht-Ctor-Funktion - so meine Frage ist jetzt ... Warum?!
Haben Sie wirklich versucht, diesen Code zu kompilieren? Es fehlt eine 'class' oder eine' struct' zwischen 'template < class T >' und 'CMyClass'. Wenn Sie 'class' hinzufügen, wird gcc problemlos kompiliert. – Tobias
Versuchen Sie auch "std :: size_t". Der Code im Konstruktor scheint zu funktionieren, aber er wird normalerweise nicht kompiliert, bis der Konstruktor beim Erstellen eines Objekts von 'CMyClass' instanziiert wird. –