Je ne sais pas si c'est possible de le faire, mais j'ai essayé plusieurs façons et rien ne semble fonctionner. Fondamentalement, j'ai besoin d'accéder au même membre statique à partir de plusieurs fichiers qui incluent la même définition de classe.Comment partager une variable statique entre des fichiers source C++?
// Filename: S.h
class S {
public:
static int foo;
static void change(int new_foo) {
foo = new_foo;
}
};
int S::foo = 0;
Puis, dans une définition de classe (autre fichier .cpp) J'ai:
// Filename: A.h
#include "S.h"
class A {
public:
void do_something() {
S::change(1);
}
};
Et dans un autre fichier:
// Filename: program.cpp
#include "S.h"
#include "A.h"
int main (int argc, char * const argv[]) {
A a = new A();
S::change(2);
std::cout << S::foo << std::endl;
a->do_something();
std::cout << S::foo << std::endl;
}
Maintenant, je me attends le deuxième appel de fonction changez le S :: foo à 1, mais la sortie est toujours:
2
Le fichier A.h crée-t-il une copie locale de la classe statique?
Merci Tommaso
Encore une fois, vous étiez plus rapide :-) –
Ce qui veut dire qu'il ne devrait pas être dans l'en-tête. –
Super, merci. Je lisais juste http://www.acm.org/crossroads/xrds2-4/ovp.html et trouvais la même solution, mais merci quand même, vous méritez la réponse acceptée :) – tunnuz