Riferimento indefinito alla variabile statica c ++

Ciao sto ricevendo errore di riferimento non definito nel seguente codice:

class Helloworld{ public: static int x; void foo(); }; void Helloworld::foo(){ Helloworld::x = 10; }; 

Non voglio una funzione static foo() . Come posso accedere alla variabile static di una class in static metodo non static di una class?

Non voglio una funzione static foo()

Beh, foo() non è statico nella tua class, e non devi renderlo static per accedere alle variabili static della tua class.

Quello che devi fare è semplicemente fornire una definizione per la tua variabile membro statica:

 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; }; 

Il codice è corretto, ma incompleto. La class Helloworld ha una dichiarazione del suo membro dati statici x , ma non esiste una definizione di quel membro dati. Qualche cosa nel tuo codice sorgente di cui hai bisogno

 int Helloworld::x; 

oppure, se 0 non è un valore iniziale appropriato, aggiungere un inizializzatore.