J'ai une classe de classe de matrice de matrice définie dans un en-tête appelé "Matrix.h".Comment éviter de redéclater accidentellement les constantes globales en C++?
Certaines matrices sont utilisées de façon répétée dans mon programme. Je pensais que je définirais ces derniers dans le fichier d'en-tête « Matrix.h », comme ceci:
const Matrix<GLfloat> B_SPLINE_TO_BEZIER_MATRIX(4, 4, values);
Quand je fais g ++ que je déplore la constante redéfini en question. Cela arrive parce que j'inclus Matrix.h dans deux fichiers source différents. Lorsque les fichiers d'objets pour ceux-ci sont compilés, les deux finissent avec une définition de la matrice ci-dessus, provoquant le message d'erreur.
Ma question est de savoir comment éviter cette situation? Je veux une constante accessible à plus d'un fichier, mais je ne sais pas où le mettre.
Merci beaucoup! Le mot-clé "statique" a fait disparaître tous mes problèmes :) – fluffels
Il est cependant obsolète en faveur de namespace {}. – MSalters
Et le second ne produira en fait pas de copies multiples: 7.1.2/4 "Une variable locale statique dans une fonction externe en ligne fait toujours référence au même objet." – MSalters