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++ Discussion :

Appeler une fonction avec un tableau � 2 dimensions?


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2012
    Messages
    1
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1
    Par d�faut Appeler une fonction avec un tableau � 2 dimensions?
    Bonjour, (J'esp�re �tre au bon endroit)

    Je suis nouveau sur ce forum. J'ai une bonne connaissance du C mais je suis un novice avec C++/cli.

    Je travaille avec visual studio 2005.

    J'ai �crit un programme en C, sans interface, et j'essaie maintenant de le 'brancher' avec une interface c++ (une forme et des boutons) que j'ai cr�� avec visual studio.

    Dans mon programme C, j'utilise des tableaux de int � 2 dimensions (int [7][7]). J'ai donc plusieurs fonctions qui prennent ce tableau en param�tre. J'essaie donc d'appeler ces fonctions � partir des m�thodes de ma forme.

    Je voudrais que ma forme contienne quelques tableaux � 2 dimensions, mais lorsque j'essaie d'ajouter une propri�t� int [7][7] � ma forme, je re�ois le message d'erreur "C4368: impossible de d�finir courant comme membre de 'animation::Form1' manag�: les types mixtes ne sont pas pris en charge".

    Je d�fini donc une variable comme �tant un pointeur � un int :
    int *courant;
    et j'alloue l'espace n�cessaire dans le constructeur :
    courant = (int *)malloc(196); (int[][7] ne fonctionne pas)

    Lorsque j'essaie d'appeler une de mes fonctions: (je suis dans le constructeur)
    initBoules(courant);
    je re�ois un message d'erreur: "C2664: 'initBoules': impossible de convertir le param�tre 1 de 'int *' en 'int[][7]' "

    J'essaie donc diff�rents cast:
    initBoules((int [][7])courant); erreur C2440
    initBoules(static_cast <int [][7]>(courant)); erreur C2440
    initBoules(reinterpret_cast <int [][7]>(courant)); erreur C2440
    initBoules(dynamic_cast <int [][7]>(courant)); erreur C2680

    Comment dois-je donc m'y prendre pour appeler ma fonction avec un tableau � 2 dimensions?

    Merci de votre aide.

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Inscrit en
    D�cembre 2011
    Messages
    9 026
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 32
    Localisation : France, Loire (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 9 026
    Par d�faut
    Bonjour,

    courant est un int * or ta fonction demande un int **, il est impossible de faire un tel cast.

    Tu dois faire au minimum 2 allocations :
    - une pour toutes les valeurs � stocker.
    - une pour toutes les pointeurs sur le premier �l�ment de chaque ligne.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
             Tableau de 3 int *               Tableau de 3*3 int
    ptr ---->    ligne1       ----------> cellule1 - cellule2 - cellule3
                 ligne2       ----------> cellule1 - cellule2 - cellule3
                 ligne3       ----------> cellule1 - cellule2 - cellule3
    Je ne suis pas tr�s dou� en ASCII art

    Ainsi tu n'as plus qu'� passer ptr � ta fonction.

  3. #3
    r0d
    r0d est actuellement connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    Bonjour,

    je conseille toujours de cr�er une classe/structure d�di�e pour manipuler des tableaux � 2 dimensions en c++. Le c++ est orient� objet, donc nous avons tendance � tout encapsuler dans des objets

    Si tu choisis cette m�thode, tu trouveras des milliers d'exemples sur le net.

    Sinon, si tu fais du c++/cli, tu devrais plut�t poster ta question dans le sous-forum d�di� car c'est un peu particulier, surtout en ce qui concerne la m�moire.

    note: le sous-forum c++/cli est bien cach�, il est l�: http://www.developpez.net/forums/f38...l-cpp/cpp-cli/

Discussions similaires

  1. param�trer une fonction avec un tableau de deux dimensions
    Par dark_geek dans le forum VB 6 et ant�rieur
    R�ponses: 2
    Dernier message: 22/02/2010, 14h01
  2. [AC-2003] Comment appeler une fonction avec deux param�tres. Erreur '=' attendu
    Par nirG95 dans le forum VBA Access
    R�ponses: 1
    Dernier message: 02/09/2009, 10h53
  3. Appeler une fonction avec un tableau en parametre ?
    Par devoluti0n dans le forum C++
    R�ponses: 9
    Dernier message: 11/04/2008, 16h21
  4. Appeler une fonction avec "action" ds un
    Par drinkmilk dans le forum ASP
    R�ponses: 4
    Dernier message: 20/04/2004, 14h54
  5. Appeler une fonction avec/sans parenth�ses
    Par haypo dans le forum Algorithmes et structures de donn�es
    R�ponses: 8
    Dernier message: 29/12/2002, 18h48

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