Bonjour, je reçois une erreur de référence non définie dans le code suivant:
class Helloworld{
public:
static int x;
void foo();
};
void Helloworld::foo(){
Helloworld::x = 10;
};
Je ne veux pas d'une fonction static
foo()
. Comment accéder à la variable static
d'une classe dans la méthode non -static
d'une classe?
Je ne veux pas de fonction
static
foo()
Eh bien, foo()
est pas statique dans votre classe, et vous faites pas vous devez le rendre static
pour pouvoir accéder à static
variables de votre classe.
Ce que vous devez faire est simplement de fournir une définition pour votre variable membre statique:
class Helloworld {
public:
static int x;
void foo();
};
int Helloworld::x = 0; // Or whatever is the most appropriate value
// for initializing x. Notice, that the
// initializer is not required: if absent,
// x will be zero-initialized.
void Helloworld::foo() {
Helloworld::x = 10;
};
Le code est correct mais incomplet. La classe Helloworld
a un déclaration de son membre de données statique x
, mais il n'y a pas de définition de ce membre de données. Vous avez besoin de quelque chose dans votre code source
int Helloworld::x;
ou, si 0 n'est pas une valeur initiale appropriée, ajoutez un initialiseur.