Bonjour à tous ;
je ne comprends pas comment devrait-on faire pour déclarer une variable qui sera utilisée par un certain nombre de classe .
en fait pour simplifier au départ j'ai mis tout sur un même fichier .cpp

j'ai une variable : Piece* SS[8][8] ; et que j'aimerai bien que tout les classes travaillent sur cette variable

j'ai essayé de la déclarer comme variable globale .
pour simplifier voici la structure du fichier .cpp

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
 
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std ;
 
 // voici la variable en question 
// je voudrai créer un plateau composée de pointeur sur des pièces 
Piece* SS[8][8] ;  
 
class Coordonnee {
 
ici attributs et méthode Coordonee
};
 
class Piece {
 
ici attributs et méthode Piece
 
}
 
class Pion :public Piece {
ici attributs et méthode Pion
}
 
class Plateau{
 
		public :
 
	  Plateau();
	void 	Affichage();
 
 
			};
 
 
 
 
		Plateau::Plateau(){
 
			for(int i = 0 ; i<8;i++){
				for(int j=0;j<8;j++){
					SS[i][j]=0;
						}}
			Piece *P1= new Piece(2,2,1,'P');
			Piece *P2=new Piece(3,3,2,'P');
			Piece *P3=new Piece(4,4,1,'P');
			Piece *P4=new Piece(5,6,2,'P');
			Piece *P5=new Piece(6,7,1,'P');
 
			   SS[2][2] = P1;
				SS[3][3] = P2;
				SS[4][4] = P3;
				SS[5][6] = P4;
				SS[6][7] = P5;
 
 
			}
 
 
void Plateau::Affichage(){
 
			int val = 0;
			int ligne , colonne ;
			int ligne1 , colonne1; 
			Piece* Ptr = NULL;
 
 
			while(val!=1) {
 
			for(int i = 0 ; i<8;i++){
				for(int j=0;j<8;j++){
					if(SS[i][j]==0){
						cout << "_" <<" " ;
						}
					else{
                          cout << SS[i][j]->getEtiquette() << " " ;
						}
 
 
					}
 
				cout << endl ;
 
 
				}
 
			cout << "entrer le point actuel :\n";
	        cin >> ligne >> colonne;
 
	         cout << "ligne:" << ligne <<"colonne:" << colonne << endl ;
 
			 cout << "entrer le d'arrivee :\n";
	        cin >> ligne1 >> colonne1;
 
	         cout << "ligne:" << ligne1 <<"colonne:" << colonne1 << endl ;
 
 
			 Ptr = SS[ligne1][colonne1];
 
 
bool resultat = SS[ligne][colonne]->ValiderDeplacement(ligne1,colonne1,Ptr);
 
if(resultat==1){
	        SS[ligne][colonne]->Deplacer(ligne1,colonne1);
			SS[ligne1][colonne1] = SS[ligne][colonne];
			SS[ligne][colonne] = 0;
 
		}
	else{
	cout << "impossible de se déplacer" << endl ;
 
		}
}
mon problème c'est que là , je rassemble tout sur un même fichier , mais lorsque je sépare chaque classe dans chaque fichier .cpp
comment et où est ce que je déclare
Piece* SS[8][8] ;
pour qu'elle soit accessible pour toutes les classes ??

avant je suis dèjà à tenter dans un fichier à part Commun.h à faire comme ceci , et inclure Commun.h pour chaque classe susceptible d'utiliser la variable SS mais il y a une erreur de multi définition

#ifndef _COMMUN_H
#define _COMMUN_H

Piece* SS[8][8] ;

#endif

autre question , vous croyez dans ce genre de chose , qu'il est préferable de mettre SS en static car je ne vois pas trop la nécessité et le rôle de static pour une variable ou une fonction

merci d'avance