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 :

passage d'un tableau en paramètre dans une fonction


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 30
    Points : 26
    Points
    26
    Par défaut passage d'un tableau en paramètre dans une fonction
    Bonjour à tous

    J'ai créé un tableau de taille déterminée et initialisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int const nbre = 1024;
    float tab[nbre] = {0};
    J'aimerai le passer dans une fonction qui le remplirait et qui le retournerait avec ses nouvelles valeurs. Pour ce faire, j'ai la fonction readtab dont la déclaration est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void readtab(float tab[]);
    Le problème est que quelque soit la manière dont j'appelle la fonction dans mon main, il y a un message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    readtab(tab); -> cannot convert from 'int' to 'float &'
    readtab(&tab); -> cannot convert from 'float(*)[]' to 'float[]'
    etc.
    Merci à qui pourra me débloquer...

  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 518
    Points
    41 518
    Par défaut
    Tu peux montrer la déclaration exacte de la fonction et le restant du main() ?

    (un code minimal mais complet qui montre le problème)
    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.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 30
    Points : 26
    Points
    26
    Par défaut
    Le readtab est déclaré et défini dans deux fonctions .cpp et .h à part (readtab.h et readtab.cpp). Il n'y a pas grand chose de plus dans la déclaration à part les autres paramètres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void readtab(const char* fichier, float tab[], float &frequence);
    Pour le main, j'ai déclaré le tableau dans le fichier en-tête (main.h) qui comporte le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include "readtab.h"
    float tab[];
    Dans main.cpp, j'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int main()
    {
       float frequence = 96000;
       const char* fichier = "data.txt";
       readtab(fichier.c_str(), &tab_A, frequence);
       return 0;
    }

  4. #4
    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 518
    Points
    41 518
    Par défaut
    Je suis surpris que cette ligne compile:

    De plus, je ne connais pas de tab_A, et fichier n'est pas un objet, donc l'appel à c_str() ne devrait même pas compiler non plus.
    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.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 30
    Points : 26
    Points
    26
    Par défaut
    Excuse, je me suis trompé en recopiant mon code... il fallait lire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int main()
    {
       float frequence = 96000;
       const char* fichier = "data.txt";
       readtab(fichier, &tab, frequence);
       return 0;
    }
    Pour le code suspect, je ne vois pas où tu veux en venir... En fait, au début, je déclarais directement 'tab' dans le main. Mais, le compilateur affichait un message d'erreur ("size unknown") et lorsque je spécifiait la taille, j'avais un autre message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int main()
    {
       float tab[1024];
       float frequence = 96000;
       const char* fichier = "data.txt";
       readtab(fichier, &tab, frequence);   -> cannot convert parameter 2 from 'float(*)[1024]' to 'float[]'
       return 0;
    }
    Ce qui ne m'avançait pas par rapport à mon problème...

  6. #6
    Membre averti
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    Citation Envoyé par damleg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        readtab(fichier, &tab, frequence);
    Essaie plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        readtab(fichier, tab, frequence);
    Ca devrait aller mieux

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 30
    Points : 26
    Points
    26
    Par défaut
    Oula oui.... désolé pour le dérangement tout le monde, je me sens bête!!!!
    Je m'étais trompé de type sur un autre paramètre (frequence) d'où le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cannot convert from 'int' to 'float &'
    (cf. premier message)
    C'était bien "readtab(fichier, tab, frequence);" qu'il fallait écrire ; ça compile bien.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/10/2007, 13h50
  2. Réponses: 3
    Dernier message: 20/03/2006, 17h46
  3. [JpGraph] Passage d'un tableau en paramètre dans une URL pour JPgraph
    Par crazydiver_e2 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 16/01/2006, 16h15
  4. Réponses: 7
    Dernier message: 18/05/2005, 15h09
  5. Réponses: 9
    Dernier message: 13/05/2005, 03h13

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