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 :

Comment declarer une map


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Par défaut Comment declarer une map
    Bonjour,

    Je suis newbies et j'ai un soucis pour déclarer une map .

    Voici ce que j'ai fais d'apres ce que j'ai trouvé sur le Web :

    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
    24
    25
    26
    27
    28
    int main() {
        std::map<float, float> mappy;
        float measX;
        float measY;
        float measZ;
        float xAng, yAng, zAng;
     
        int X = 0, Y = 0, Z = 0;
     
        int minVal = 265;
        int maxVal = 402;
     
        while(1) {
     
            measX = analog_X.read(); // Converts and read the analog input value (value from 0.0 to 1.0)
            measY = analog_Y.read(); 
            measZ = analog_Z.read(); 
     
    //convert read values to degrees -90 to 90 - Needed for atan2
            xAng = mappy(measX , minVal, maxVal, -90, 90);
            yAng = mappy(measY, minVal, maxVal, -90, 90);
            zAng = mappy(measZ, minVal, maxVal, -90, 90);
     
            X = RAD_TO_DEG * (atan2(-yAng, -zAng) + PI);
            Y = RAD_TO_DEG * (atan2(-xAng, -zAng) + PI);
            Z = RAD_TO_DEG * (atan2(-yAng, -xAng) + PI);
     
            printf("x:  %.0f  | y: %.0f  | z: %.0f \r", X, Y, Z );

    J'applique ce code sur une board où est connecté un pointeur 3D.
    J'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error: Call of an object of a class type without appropriate operator() or conversion functions to pointer-to-function type in "main.cpp", Line: 47, Col: 17
    sur les 3 calculs d'angle.
    J'ai apparemment mal déclarer un objet mais je ne sais pas lequel.

    Merci de votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 514
    Par défaut
    C'est laquelle, la ligne 47 ???

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 760
    Par défaut
    20, 21, 22 j'imagine. Std::map ne possède pas d'opérateur parenthésé, mais je ne comprends ce qu'est sensé faire le code... ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Si t'as trouvé ça sur le web mappy(measX , minVal, maxVal, -90, 90), change de web.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre chevronné Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Par défaut
    Bonjour,

    Connais tu exactement le role d'un std::map en C++ ? Ce n'est pas un objet pour du calcul géométrique mais un conteneur de type tableau associatif. Il sert à stocker des objets (dans ton cas de type float) identifié par une clef (ici également de type float).

    Ton erreur proprement dite vient de ce que dans map, il n'y a pas d'opérateur ainsi défini : float map::operator() (float, float, float, int, int);

    Tu n'as apparemment pas compris le rôle de map et tu tentes de l'utiliser d'une façon qui n'a rien à voir avec sa fonction.

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Par défaut
    Citation Envoyé par jo_link_noir Voir le message
    20, 21, 22 j'imagine. Std::map ne possède pas d'opérateur parenthésé, mais je ne comprends ce qu'est sensé faire le code... ?
    Merci de m'avoir répondu et le premier degrés :-)

    J'avais prévenu je suis newbie. C'est assez simple, il mesure une entrée en volts et la converti en degrée suivant la valeur de la tension measX, measY ou measZ dans le code.
    Voici la doc Arduino ici mais ma board est une Nucleo STM32 et utilise C++ comme langage de programmation

    Ou pourrais je trouver de la documentation pour faire le map et tableau de hachage en C++?

    D'avance merci

  7. #7
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    la documentation se trouve sur des sites de "référence".
    personnellement, j'utilise cppreference.com, mais il existe aussi cplusplus.com.

  8. #8
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut
    Dans le billet de blog que tu cites, voici ce que je trouve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //convert read values to degrees -90 to 90 - Needed for atan2
      int xAng = map(xRead, minVal, maxVal, -90, 90);
      int yAng = map(yRead, minVal, maxVal, -90, 90);
      int zAng = map(zRead, minVal, maxVal, -90, 90);
    map est ici une fonction ou un objet-fonction mais ledit billet ne semble pas préciser sa définition. Seule certitude, ce n'est pas un std::map

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/03/2007, 14h08
  2. comment declarer une variable de type date ?
    Par MAJIK_ENIS dans le forum JDBC
    Réponses: 1
    Dernier message: 26/05/2006, 00h02
  3. Comment declarer une fonction ou procedure globale
    Par manubrard dans le forum Langage
    Réponses: 8
    Dernier message: 21/02/2006, 14h21
  4. Réponses: 3
    Dernier message: 15/12/2005, 22h04
  5. Comment déclarer une variable globale
    Par davkick dans le forum C
    Réponses: 13
    Dernier message: 20/05/2005, 18h50

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