IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

C++-tableau a 2 dimensions en argument


Sujet :

C++/CLI

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 45
    Points : 77
    Points
    77
    Par défaut C++-tableau a 2 dimensions en argument
    Bonjour,

    alors avant tou voici mon code:


    main.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
     
    #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 : 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
     
    #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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    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.

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/05/2010, 05h46
  2. [PHP 5.2] [Tableaux] Tableau multi-dimension en argument d'une fonction
    Par dkmatt dans le forum Langage
    Réponses: 2
    Dernier message: 10/04/2009, 16h54
  3. Tableau a trois dimension!!!
    Par krfa1 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/10/2005, 15h52
  4. Réponses: 1
    Dernier message: 30/09/2005, 19h17
  5. [Tableau]comment connaitre la taille d'un tableau à 2 dimensions
    Par Kyti dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 22/04/2005, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo