Si maxSize
est un membre normal de la classe X, vous ne pouvez pas y accéder de cette façon. Vous devrez le passer comme un autre paramètre à la fonction. Si maxSize
est un membre statique de la classe, alors ce code devrait fonctionner.
Si ce n'était pas ce que vous demandiez, alors vous devez clarifier votre question et peut-être ajouter plus de code montrant ce que vous rencontrez des problèmes.
Edit:
Dans votre nouvel exemple, la ligne que vous avez marqué « illégal » serait en fait compiler la façon dont vous l'avez écrit. (Il est déclaré un pointeur X
local nommé myX
qui existe seulement à l'intérieur de cette fonction.)
Mais je devine que vous voulais dire:
int X::foo(const char * const key)
{
myX = NULL;
}
Et ce serait un échec parce que myX
n'est pas une variable statique. Les fonctions statiques ne peuvent pas accéder aux variables membres normales. Ils peuvent uniquement accéder aux variables statiques.
Vous devrez réviser votre conception:
- Soit faire
myX
un membre statique de X
si cela est approprié dans votre programme.
- Ou de créer
X::foo
une fonction de membre non statique.
- Ou ajoutez un autre paramètre à
X::foo
à travers lequel vous pouvez accéder à myX
. Il y aurait plusieurs façons selon la façon dont vous voulez concevoir les choses. Voici un exemple: int X::foo(const char * const key, X *& theXpointer)
Vous devez formater votre code de manière lisible. – sth
... et acceptez certaines des réponses à vos autres questions. –
est 10 minutes la coupure pour faire ces choses? =/ – user40120