Bonjour,
Voilà, j'ai un problème tout con mais je sèche dessus depuis 50 minutes. J'ai déclaré une constante statique dans une class :
Selon la spec je devrais avoir le droit de l'initialiser ici directement, cela compile sous gcc 4.3.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
Par contre lorsque je veux passer cette constante à une fonction qui mange une référence, le linker m'envoie un message d'erreur "undefined reference".
Si la variable statique n'est pas utilisée comme référence en revanche ça fonctionne...
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
J'ai cherché sur le net, vu différentes solutions, ce serait du à une vieille spec vaseuse que GCC a à tout prix voulu implémenter correctement, bref.
Donc la solution qui marche serait d'écrire
Utiliser l'opérateur + pour transformer la constante en lvalue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part +ItemAttributes::MAX_IDF_VALUE
Ou encore utiliser un cast...
Ou finalement, rajouter une déclaration dans le fichier cpp de la classe qui utilise la constante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part (int)ItemAttributes::MAX_IDF_VALUE
Les 2 premières solutions ont l'air de vieux hacks, la 3e semble plus juste mais je suis pas sûr de ce qu'elle implique, ni même si ma constante vaudra toujours 5...
Code : Sélectionner tout - Visualiser dans une fenêtre à part const int ItemAttributes::MAX_IDF_VALUE;
Si quelqu'un peut m'aider à y voir plus clair...

 

 
		
		 
         
 

 
			
			



 
			 
   
 


 Static const (undefined reference avec g++)
 Static const (undefined reference avec g++)
				 Répondre avec citation
  Répondre avec citation


 
			 
  


 
  
 
 
			 Envoyé par Médinoc
 Envoyé par Médinoc
					
 .
.
Partager