begin process at 2012 05 28 18:14:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

Deux pointeurs sur une meme classe dans deux classe differentes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Deux pointeurs sur une meme classe dans deux classe differentes

samedi 14 mai 2011 à 15:33:44 | Deux pointeurs sur une meme classe dans deux classe differentes

tiouil

Bonjour, apres un mois d'absence me revoila avec mes problemes malheureusement.

Alors je vous explique, j'ai un jeu a programmé avec une architecture modele/vue (donc classe modele et classe vue) + une autre classe, une classe cellule (avec une matrice, un nombre de lignes et de colonnes).

La vue et le modele ont chacun un pointeur sur la classe cellule mais :
- quand l'utilisateur via un bouton incremente le nombre de lignes ou colonnes (donc par la classe vue), la classe cellule (ou du moins l'entite mais je simplifie car j'en ai marre (2 semaines que sa traine et je viens juste de m'en apercevoir) ), la vue s'incremente bien (car j'utilise des accesseurs) et la classe cellule aussi mais pas le modele qui reste fixé au nombre du depart qui est dans le constructeur de cellule.

- aussi ma matrice de cellule est initialisée a faux via ce code :

Code C/C++ :
vector<vector<bool> > _matrice_cellules_T; // declaration dans cellule.h
_matrice_cellules_T.resize(_nb_lignes, vector<bool>(_nb_colonnes, false));


la vue et l'entite de la classe cellule recoit bien 0 partout (je le vois par l'affichage et la sauvegarde de la matrice dans un fichier texte) mais ce fameux modele me joue encore des tours car lui recoit 1 partout (je l'ai vu car j'ai fait un cout<< et j'ai aussi fait appel a la MEME fonction sauvegarde qui est toujours dans la classe cellule).

Autrement dit le modele qui utilise les memes accesseurs que la vue n'en fait qu'a sa tete.

voici quelques accesseurs de la classe cellule :
Code C/C++ :
//fonction appelée par la vue pour le dessin si renvoi faux on dessine pas de cellule dans cette case sinon une cellule apparait (comme par magie [^^happy3])
bool Cellule::getValeurMatrice(int i, int j)
{
	return _matrice_cellules_T[i][j];
}

// les deux suivantes sont appelées par la vue (dans la meme fonction que celle du dessus aussi pour savoir quand arreter de dessiner)
int Cellule::getNBCOLONNES()
{
	return _nb_colonnes;
} 

int Cellule::getNBLIGNES()
{
	return _nb_lignes;
}

//de la meme facon les accesseurs en ecriture appele par la vue lors du clique pour ajouter ou enlever une ligne ou colonne
void Cellule::setNBLIGNES(int nb)
{
	_nb_lignes = nb;
}

void Cellule::setNBCOLONNES(int nb)
{
	_nb_colonnes = nb;
}


J'espere que vous allez m'aider a ne pas peter un boulon et surtout a comprendre mes erreurs

Merci a tous par avance,
Cyril Z.
samedi 14 mai 2011 à 15:39:44 | Re : Deux pointeurs sur une meme classe dans deux classe differentes

tiouil

J'ai failli oublié, j'utilise la sfml et le c++ et aussi apres le redimensionnement de la matrice je fait appel a cette fonction toujours par la vue et la fonction se trouve dans cellule.cc
Code C/C++ :
oid Cellule::resizeMatrice(string quoi, bool ligne)
{	
	cout<<"Pour la classe cellule il y a "<<_nb_lignes<<" lignes et "<<_nb_colonnes<<" colonnes"<<endl;
	int i;
	int j;
	
	if(ligne)
	{			
		if(quoi == "+")
		{	
			_nb_lignes++;
			_matrice_cellules_T.resize(_nb_colonnes, vector<bool>(_nb_lignes));
			_matrice_cellules_T_1.resize(_nb_colonnes, vector<bool>(_nb_lignes));
			_matrice_cellules_resistantes_T.resize(_nb_colonnes, vector<bool>(_nb_lignes,false));
			j = (_nb_lignes - 1);
			
			for(i=0; i < _nb_colonnes; i++)
			{
				_matrice_cellules_T[i][j] = false; // on met toutes les cases de la ligne créée a faux (on fait varier la colonne)
			}
		}
		else
		{
			j = (_nb_lignes - 1);
			for(i=0; i < (_nb_colonnes); i++)
			{
				_matrice_cellules_T[i][j] = false; // sur l'ancienne taille
			}
			_nb_lignes--;
			_matrice_cellules_T.resize(_nb_colonnes, vector<bool>(_nb_lignes));
			_matrice_cellules_T_1.resize(_nb_colonnes, vector<bool>(_nb_lignes));
			_matrice_cellules_resistantes_T.resize(_nb_colonnes, vector<bool>(_nb_lignes,false));
		}
	}
	else //colonne
	{
		if(quoi == "+")
		{	
			_nb_colonnes++;
			_matrice_cellules_T.resize(_nb_colonnes, vector<bool>(_nb_lignes));
			_matrice_cellules_T_1.resize(_nb_colonnes, vector<bool>(_nb_lignes));
			_matrice_cellules_resistantes_T.resize(_nb_colonnes, vector<bool>(_nb_lignes,false));
			i = _nb_colonnes - 1;
			
			for(j = 0; j < (_nb_lignes); j++)
			{
				_matrice_cellules_T[i][j] = false;// on met toutes les cases de la colonne créée a faux (on fait varier la ligne)
			}
		}
		else // "-"
		{
			i = _nb_colonnes - 1;
			for(j = 0; j < (_nb_lignes); j++)
			{
				_matrice_cellules_T[i][j] = false; // sur l'ancienne taille
			}
			_nb_colonnes--;
			_matrice_cellules_T.resize(_nb_colonnes, vector<bool>(_nb_lignes));
			_matrice_cellules_T_1.resize(_nb_colonnes, vector<bool>(_nb_lignes));
			_matrice_cellules_resistantes_T.resize(_nb_colonnes, vector<bool>(_nb_lignes,false));
		}
	}
}


Par la meme occasion quand j'ajoute des colonnes et qu'il y a moins de lignes, ma matrice disjoncte et m'affiche de nouvelles cellules mais pas sur toute la ligne ou colonne mais a quelques endroits (et apres verification elle les cases concernées sont a true dans la matrice)

Cyril Z.


Cette discussion est classée dans : cellule, classe, vue, nb, modele


Répondre à ce message

Sujets en rapport avec ce message

acceder à OnPrint à partir d'une autre classe [ par abdel76440 ] ma question peut vous apparaitre très simple mais pour moi elle est la clef pour finir mon projet,j'ai un dialog based dans lequel je crée une fenètre tableau d'une classe... [ par jonathan100 ] Bonjour a tous, Voici mon problème. J'ai une classe Voiture, et une classe table qui contient un tableau de Voiture. Voici le code de la classe table, ListBox dans une Vue [ par crocejf2000 ] Salut tout le monde,(OS : Win XP, Visual c++.net)J'ai une classe CMaVue qui dérive de la classe CView. A partir de CMaVue je veut afficher une listBox Matrice constante. [ par nsoualem ] j'ai crée une classe matrice avec un constructeurdu type:matrice(int nbligne,int nbcolonne)...elle marche a merveille!!!Lors de la création d'un code, incompatibilité 'std' et 'friend' [ par cabieces ] CABECOUJ'ai définit une fonction amie, celle ci doit donc pouvoir accéder aux champs privée de la classe. Ceci marche trés bien sauf quand la classe u classe et agregation... [ par Clonk ] bonjour,j'utilise plusieurs classes ayant des agregations (sous Borland).Disons en gros que si on a :class personne{private:int age;public:void affich liste chaînée et classes [ par yeager ] Bonjour!J'ai programmé pendant deux ans en C et actuellement j'étudie le C++. Pour moi une classe est l'équivalent d'une structure en plus évolué (hér template? [ par payen ] Salut a tous,je programme actuellement une bibli de traitement d'images en C++, et j'ai un p'tit souci. En fait, j'ai cree une classe image qui contie Help !!! Probleme de Boite de Dialogue dans une toolbar ie [ par Stephcoet ] Je suis en train de développer un pluggin sous Internet Explorer permettant d'afficher une barre d'outil par laquelle différentes actions seront lancé recupération de donnée [ par jgravo ] Est ce que quelqu'un arrive a récupérer les valeurs d'une listebox qui se trouve dans une classe et les réinsérer dans une combobox qui se trouve dans


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,184 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales