Précédent   Forum du club des développeurs et IT Pro > C et C++ > Outils pour C & C++ > Visual C++ > C++/CLI
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 14/09/2012, 20h03   #1
ScriptorTux
Invité de passage
 
Homme
Inscription : juin 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juin 2012
Messages : 4
Points : 1
Points : 1
Par défaut C++-tableau a 2 dimensions en argument

Bonjour,

alors avant tou voici mon code:


main.cpp
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
#include <iostream>
#include "Sudoku.h"
#include <boost/multi_array.hpp>
 
int main()
{	
	typedef boost::multi_array<int,2> grille;
	grille grille2(boost::extents[9][9]);
	int i;
	grille2[9][9]={
		{9,0,0,1,0,0,0,0,5},
		{0,0,5,0,9,0,2,0,1},
		{8,0,0,0,4,0,0,0,0},
		{0,0,0,0,8,0,0,0,0},
		{0,0,0,7,0,0,0,0,0},
		{0,0,0,0,2,6,0,0,9},
		{2,0,0,3,0,0,0,0,6},
		{0,0,0,2,0,0,9,0,0},
		{0,0,1,9,0,4,5,7,0}
	};
	Sudoku sud(grille2[9][9]);
}
Sudoku.cpp

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
#include <iostream>
#include "Sudoku.h"
 
Sudoku::Sudoku(int grille[][])
{
	int size_1, size_2, i, j;
	/*for(i=0; i<9; ++i)
		for(j=0; i<9; ++j)
			m_grille[i][j]=grille[i][j];*/
}
 
void Sudoku::afficher()
{
	int size_1, size_2, i, j;
	for(i=0; i<9; ++i)
	{
		std::cout << std::endl;
		for(j=0; j<9; ++j)
			std::cout << m_grille[i][j] << " ";
	}
 
}
Sudoku.h
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
#include <iostream>
#include <vector>
 
class Sudoku
{
	public:
		Sudoku(int grille[][]);
		void afficher();
	private:
		int** m_grille;
};
et le retour du compilateur

Code :
1
2
3
4
5
6
7
8
9
[ 50%] Building CXX object CMakeFiles/../bin/Sudoku.dir/home/scriptor/Programmation/Sudoku/src/main.cpp.o
In file included from /home/scriptor/Programmation/Sudoku/src/main.cpp:2:0:
/home/scriptor/Programmation/Sudoku/src/Sudoku.h:7:23: erreur: declaration of ‘grille’ as multidimensional array must have bounds for all dimensions except the first
/home/scriptor/Programmation/Sudoku/src/main.cpp: In function ‘int main():
/home/scriptor/Programmation/Sudoku/src/main.cpp:20:2: attention : extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
/home/scriptor/Programmation/Sudoku/src/main.cpp:20:2: erreur: cannot convert ‘<brace-enclosed initializer list>’ to ‘int’ in assignment
make[2]: *** [CMakeFiles/../bin/Sudoku.dir/home/scriptor/Programmation/Sudoku/src/main.cpp.o] Erreur 1
make[1]: *** [CMakeFiles/../bin/Sudoku.dir/all] Erreur 2
make: *** [all] Erreur 2
Avant d'en arriver la j'effectue plusieurs tests, et d'après mes recherches il semblerait que les tableaux a deux dimensions et plus soient gérés différemment en c++. En effet j'ai l'improssion que le problème se pose au niveau de la grille2, et son passage e argument, mais je n'arrive pas à régler mon problème. Voilà pourquoi j'en appelle à vous.

Merci de toutes réponses
ScriptorTux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2012, 17h33   #2
Médinoc
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 22 383
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2005
Messages : 22 383
Points : 32 020
Points : 32 020
Envoyer un message via MSN à Médinoc
Bonjour,
  1. Ceci n'est pas du C++/CLI, seulement du C++
  2. On ne peut déclarer de tableaux à deux dimensions dynamiques en C++ (ni en C, d'ailleurs). Par contre:
    • Tu peux faire un tableau de pointeurs, pointant chacun vers un tableau dynamique ou vers différents points d'un tableau dynamique (voir images). C'est typiquement ce qu'on fait en C.
    • tu peux faire un vecteur de vecteurs ou utiliser un boost::multi_array dans tout ton programme. C'est plus "C++".
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone.
-- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h05.


 
 
 
 
Partenaires

Hébergement Web