2009-12-07 7 views
2
class School 
{ 
    static const int *classcapacity; 
}; 

Cette expression est de mon examen et il doit être initialisé comment puis-je faire cela?Comment initialiser le pointeur statique const dans une classe?

+0

Rappelez-vous que le pointeur n'est pas une constante donc peut être initialisé et assigné normalement. Ici, le qualificatif const empêche simplement que les données pointées soient modifiées par ce pointeur, c'est-à-dire que * classcapacity = 0' n'est pas valide. Vous avez cependant besoin d'au moins un initialiseur statique. – Clifford

+0

Merci pour l'explication. Je vois comment cela fonctionne maintenant. –

Répondre

2

probablement de cette façon:

class School{ 
    static const int *classcapacity ; 
}; 
const int *School::classcapacity = 0; 
2

Si vous voulez initialiser avec YOUR_INITIALIZER:

class School{ static const int *classcapacity ; } ; 
const int* School::classcapacity = YOUR_INITIALIZER; 
8

Vous pouvez initialiser dans votre fichier source, à l'extérieur du corps de la classe, tout comme vous auriez n'importe quelle autre variable membre statique, à savoir:

const int* School::classCapacity(new int(42)); 
+0

C'est ça. Merci! –

0

Je sais que c'est vieux, mais en C++ 11, y ou'd écrire:

class School 
{ 
    static const int* classcapacity{new int[4]}; // initialize with 4-element array 
}; 
+0

Ceci est toujours invalide dans C++ 11. Notez que le membre est non-const. – typ1232

Questions connexes