je frappe aujourd'hui accroc ... Je voulais définir une petite classe d'aide basé sur un modèle:sizeof() et le modèle Argument Dans cteur/non-cteur Fonction
template<class T>
CMyClass
{
public :
CMyClass() { size_t iSize = sizeof(T); } // Allowed.
size_t GetElementSize() const { return sizeof(T); } // C2027.
};
et bien sûr, il ne serait pas compiler (C2027). Ma question était, est-il possible d'obtenir la taille du type? La raison pour laquelle j'ai besoin de ceci est que le type avec lequel l'objet est construit pourrait être un nombre de structures définies différemment, et donc j'ai besoin de connaître la taille de la structure utilisée, au moment de l'exécution. Par un peu d'expérimentation, parce que je suis têtu, il semble que je peut utiliser sizeof (T) dans le ctor, mais pas dans la fonction non-ctor - alors ma question est maintenant ... Pourquoi?!
Avez-vous vraiment essayé de compiler ce même code? Il manque une 'classe' ou' struct' entre 'template < class T >' et 'CMyClass'. Si vous ajoutez 'class', gcc compilera très bien. – Tobias
Aussi, essayez "std :: size_t". Le code dans le constructeur peut sembler fonctionner, mais il n'est généralement pas compilé jusqu'à ce que le constructeur soit instancié lors de la création d'un objet de 'CMyClass'. –