J'ai une fonction avec une donnée membre statique :
Maclasse { public: static int z;
//... et le reste }
Je veux l'utiliser dans le programme principal comme ça
Maclasse::z = 1;
Mais à l'édition de lien ça ne passe pas, il me dit [Lieur Erreur] Unresolved external 'Maclasse::z' .......
Je ne peux accéder à un membre statique que dans une fonction membre de la classe ?
Merci.
Non, si tu définis Maclasse dans maclasse.h alors tu ajoutes en entête de maclasse.cpp
int Maclasse::z;
puis le reste du code (les méthodes de ta classe).
Christophe Lephay
Remi Voisin wrote:
J'ai une fonction avec une donnée membre statique :
Maclasse { public: static int z;
//... et le reste }
Je veux l'utiliser dans le programme principal comme ça
Maclasse::z = 1;
Mais à l'édition de lien ça ne passe pas, il me dit [Lieur Erreur] Unresolved external 'Maclasse::z' .......
Je ne peux accéder à un membre statique que dans une fonction membre de la classe ?
Je pense que c'était :
class Maclasse...
Si ta donnée est publique, tu peux très bien écrire par la suite :
void fonction() { ... Maclasse::z = 1; ... }
Je crois que l'erreur que tu obtiens est liée au fait que tu délares Maclasse::z mais que tu ne la définis pas. Il te faut écrire dans Maclasse.cpp (ou quel que soit le nom du fichier contenant l'implémentation de Maclasse) :
Maclasse::z;
Ou alors à la place, en l'initialisant dans la foulée :
Maclasse::z = 0; // ou toute autre valeur
Chris
Remi Voisin wrote:
J'ai une fonction avec une donnée membre statique :
Maclasse
{
public:
static int z;
//... et le reste
}
Je veux l'utiliser dans le programme principal comme ça
Maclasse::z = 1;
Mais à l'édition de lien ça ne passe pas, il me dit
[Lieur Erreur] Unresolved external 'Maclasse::z' .......
Je ne peux accéder à un membre statique que dans une fonction membre
de la classe ?
Je pense que c'était :
class Maclasse...
Si ta donnée est publique, tu peux très bien écrire par la suite :
void fonction() {
...
Maclasse::z = 1;
...
}
Je crois que l'erreur que tu obtiens est liée au fait que tu délares
Maclasse::z mais que tu ne la définis pas. Il te faut écrire dans
Maclasse.cpp (ou quel que soit le nom du fichier contenant l'implémentation
de Maclasse) :
Maclasse::z;
Ou alors à la place, en l'initialisant dans la foulée :
J'ai une fonction avec une donnée membre statique :
Maclasse { public: static int z;
//... et le reste }
Je veux l'utiliser dans le programme principal comme ça
Maclasse::z = 1;
Mais à l'édition de lien ça ne passe pas, il me dit [Lieur Erreur] Unresolved external 'Maclasse::z' .......
Je ne peux accéder à un membre statique que dans une fonction membre de la classe ?
Je pense que c'était :
class Maclasse...
Si ta donnée est publique, tu peux très bien écrire par la suite :
void fonction() { ... Maclasse::z = 1; ... }
Je crois que l'erreur que tu obtiens est liée au fait que tu délares Maclasse::z mais que tu ne la définis pas. Il te faut écrire dans Maclasse.cpp (ou quel que soit le nom du fichier contenant l'implémentation de Maclasse) :
Maclasse::z;
Ou alors à la place, en l'initialisant dans la foulée :
Maclasse::z = 0; // ou toute autre valeur
Chris
Remi Voisin
Bonjour
Non, si tu définis Maclasse dans maclasse.h oui c'est ça, la classe déclarée dans un fichier .h, les fonctions
membresdéfinies dans un fichier .cpp
alors tu ajoutes en entête de maclasse.cpp int Maclasse::z;
Ah oui ça marche, je n'avais pas compris qu'il fallait redéclarer z dans le fichier .cpp. Je n'avais vu ça nul part. Merci. -- R. VOISIN (Enlevez "oulala-" pour m'écrire.)
Bonjour
Non, si tu définis Maclasse dans maclasse.h
oui c'est ça, la classe déclarée dans un fichier .h, les fonctions
membresdéfinies dans un fichier .cpp
alors tu ajoutes en entête de maclasse.cpp
int Maclasse::z;
Ah oui ça marche, je n'avais pas compris qu'il fallait redéclarer z dans le
fichier .cpp. Je n'avais vu ça nul part.
Merci.
--
R. VOISIN
(Enlevez "oulala-" pour m'écrire.)
Non, si tu définis Maclasse dans maclasse.h oui c'est ça, la classe déclarée dans un fichier .h, les fonctions
membresdéfinies dans un fichier .cpp
alors tu ajoutes en entête de maclasse.cpp int Maclasse::z;
Ah oui ça marche, je n'avais pas compris qu'il fallait redéclarer z dans le fichier .cpp. Je n'avais vu ça nul part. Merci. -- R. VOISIN (Enlevez "oulala-" pour m'écrire.)
Remi Voisin
Bonjour
Je pense que c'était class Maclasse...
Oui j'ai bien le mot clé class, je l'ai oublié dans mon message.
Je crois que l'erreur que tu obtiens est liée au fait que tu délares Maclasse::z mais que tu ne la définis pas. Il te faut écrire dans Maclasse.cpp (ou quel que soit le nom du fichier contenant l'implémentation de Maclasse) :
Maclasse::z; Exactement, mes doc sur le C++ sont pas récentes, 1989 pour la plus
complète, mais depuis il y a eu des changements ou bien des ouvrages de découverte, et je n'avais pas compris cette définition des variables statiques.
Merci. -- R. VOISIN (Enlevez "oulala-" pour m'écrire.)
Bonjour
Je pense que c'était
class Maclasse...
Oui j'ai bien le mot clé class, je l'ai oublié dans mon message.
Je crois que l'erreur que tu obtiens est liée au fait que tu délares
Maclasse::z mais que tu ne la définis pas. Il te faut écrire dans
Maclasse.cpp (ou quel que soit le nom du fichier contenant l'implémentation
de Maclasse) :
Maclasse::z;
Exactement, mes doc sur le C++ sont pas récentes, 1989 pour la plus
complète, mais depuis il y a eu des changements ou bien des ouvrages de
découverte, et je n'avais pas compris cette définition des variables
statiques.
Merci.
--
R. VOISIN
(Enlevez "oulala-" pour m'écrire.)
Oui j'ai bien le mot clé class, je l'ai oublié dans mon message.
Je crois que l'erreur que tu obtiens est liée au fait que tu délares Maclasse::z mais que tu ne la définis pas. Il te faut écrire dans Maclasse.cpp (ou quel que soit le nom du fichier contenant l'implémentation de Maclasse) :
Maclasse::z; Exactement, mes doc sur le C++ sont pas récentes, 1989 pour la plus
complète, mais depuis il y a eu des changements ou bien des ouvrages de découverte, et je n'avais pas compris cette définition des variables statiques.
Merci. -- R. VOISIN (Enlevez "oulala-" pour m'écrire.)