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 :

Problème de déclaration de tableaux


Sujet :

C++/CLI

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 79
    Points : 24
    Points
    24
    Par défaut Problème de déclaration de tableaux
    Je vais pas tarder à "craquer" comme il est de rigueur de dire dans ces cas là...

    Cette année, j'ai fait plusieurs mois de C++ sous linux, des programmes console à la pelle etc...

    J'arrive en stage, on me dit, "faut faire un programme, avec interface graphique" (là je pense "visual + MFC"), et "y aura des calculs sur des matrices, etc..." (là je pense C++). J'ai pas mal programmé donc en C et C++ (console), et je me débrouille en Delphi et VB (jamais eu le moindre problème avec ces deux là).

    Et là, depuis mercredi, j'ai attaqué le Visual C++.

    Je suis complètement pommé, j'ai même pas l'impression que c'est le même langage, le compilateur m'envoie des erreurs à tout va, alors que mon code correspond bel et bien à du C++... Je me sens bien mal.

    La dernière en date, qui m'a poussé à écrire un post de plus (bientot je vais passer le plus gros de mon temps à poster plutot qu'à coder...) c'est ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
    			 {
    				 int i,j;
    				 i = 2;
    				 j = 4;
    				 double matA[i][j];
    			 }
    	};
    Tout bête, je clique sur un bouton, et ça déclare un tableau de dimensions i et j.

    Et bien non, monsieur Visual C++ veut pas ! :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    c:\documents and settings\lustrement\bureau\essai_multi\essai_multi\Form1.h(90) : error C2057: expression constante attendue
    c:\documents and settings\lustrement\bureau\essai_multi\essai_multi\Form1.h(90) : error C2466: impossible d'allouer un tableau de taille constante 0
    c:\documents and settings\lustrement\bureau\essai_multi\essai_multi\Form1.h(90) : error C2057: expression constante attendue
    c:\documents and settings\lustrement\bureau\essai_multi\essai_multi\Form1.h(90) : error C2466: impossible d'allouer un tableau de taille constante 0
    c:\documents and settings\lustrement\bureau\essai_multi\essai_multi\Form1.h(90) : error C2087: 'matA' : indice manquant
    c:\documents and settings\lustrement\bureau\essai_multi\essai_multi\Form1.h(90) : error C2133: 'matA' : taille inconnue
    J'ai pas le droit de déclarer un tableau de dimensions disons "non constantes"
    Enfin bref, je peux pas (c'était l'utilisation que je voulais en faire) créer une fonction, qui prend en paramètre un tableau et ses dimensions, et dans cette fonction redéclarer un autre tableau qui utilise ces dimensions ... c'est pas clair : je m'explique :

    Exemple de fonction qui fait la transposée d'une matrice :

    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
     
    double transp(double matA, int m, int n)
    {
    double matB[n][m];
    int i,j;
     
    for(i=0;i<m;i++)
    {
         for(j=0;j<n;j++)
         {
               matB[j][i] = matA[i][j];
         }
    }
    return(matB);
    }
    Bref, c'est bon, j'ai vu visual C++, et je suis pas là d'y retoucher. Enfin, j'ai encore 4 semaines à galérer....

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    un titre plus explicite aurait été bienvenue. [ancien : Marre des "cadeaux" de Visual C++ 2005]

    Ensuite, ton projet n'est pas MFC, c'est semble-t-il un projet winforms.

    Pour faire des tableaux, je te suggère d'utiliser les array du namespace cli (voir http://dotnet.developpez.com/faq/cpp...ntaxe#cliarray)

    une allocation dynamique se fait avec new (ou gcnew pour les array)

    tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int tab[20];
    int * tab = new int[x];
    mais pas
    et ca, c'est valable quelque soit le compilateur c++ !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 79
    Points : 24
    Points
    24
    Par défaut
    Oui, je sais, c'est vrai pour l'allocation dynamique... Je crois que je commence complètement à marcher à côté de mes pompes . Je suis complètement dépassé par les évennements, et je sais pas du tout comment me sortir de ce faux pas. Je crains que mon stage se traduise par un pur échec... C'est par les erreurs qu'on apprend ! tout ne sera pas perdu.

    Merci pour ta réponse

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Citation Envoyé par BenjaminLustrement
    e crains que mon stage se traduise par un pur échec... C'est par les erreurs qu'on apprend ! tout ne sera pas perdu.
    Justement, c'est une opportunité d'apprendre plein de nouvelles choses

    Il n'y a echec que lorsqu'on a arreté de vouloir réussir

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 79
    Points : 24
    Points
    24
    Par défaut
    Purée je suis maudit c'est pas possible !

    J'ai voulu déclarer mon tableau à deux dimensions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     int i=4,j=5;
     int **matrice;
     matrice  = new int[i][j];
    Et ça marche pas ! c'est pas croyable !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    c:\documents and settings\lustrement\bureau\essai_multi\essai_multi\Form1.h(89) : error C2540: expression non constante comme limite de tableau
    c:\documents and settings\lustrement\bureau\essai_multi\essai_multi\Form1.h(89) : error C2440: '=' : impossible de convertir de 'int (*)[1]' en 'int **'

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    pinaize, c'est plutot comme ca qu'il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	int i=4,j=5;
    	int **matrice;
    	matrice  = new int*[i];
    	for (int k=0;k<i;k++)
    		matrice[k] = new int[j];
    mais si je peux me permettre une précision, c'est plutot du C ca, le c++ ca serait à base de vecteurs, et en c++/cli plutot des array

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 79
    Points : 24
    Points
    24
    Par défaut
    Je viens en effet de m'en apercevoir. Je pense que j'aurais dû me plonger dans le C++ il y a deux semaine, ça m'aurait éviter de faire des mélanges (C, C#, C++, Java....).

    Bon, merci encore et honte à moi.

Discussions similaires

  1. Proble avec un vhosts sous Apache (Mandrake 10.1)
    Par __fabrice dans le forum Apache
    Réponses: 2
    Dernier message: 27/05/2005, 13h11
  2. Aide sur la RS 232
    Par Andr0 dans le forum C
    Réponses: 5
    Dernier message: 12/04/2005, 13h58
  3. Proble capture direct Show
    Par liliemumue dans le forum DirectX
    Réponses: 3
    Dernier message: 13/12/2004, 21h04
  4. Réponses: 2
    Dernier message: 05/10/2004, 22h43
  5. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49

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