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 :

Pas d'idée d'intitulé représentatif ;)


Sujet :

C++

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 88
    Par défaut Pas d'idée d'intitulé représentatif ;)
    Salut!

    Bon, j'ai un petit probleme pour le moment, je tente de retransformé mes fichiers en orienté objets. J'ai un petit robot, que j'initialisais et configurais dans mon main.

    Je veut retransformé ca en une classe robot, hors du main, et je me prends des erreurs dont je ne vois pas le fondement, car le code dans le main marche parfaitement bien.

    class Robot
    {

    public :

    Robot();

    11 ArRobot robot;
    12 ArSonarDevice sonarDev;
    ArActionLimiterForwards limiterAction("speed limiter near", 300, 600, 250);
    ArActionLimiterForwards limiterFarAction("speed limiter far", 300, 1100, 400);
    15 ArActionLimiterTableSensor tableLimiterAction ;
    ArActionGoto gotoPoseAction("goto");
    };


    Robot::Robot()
    {
    22 robot.addRangeDevice(&sonarDev);
    robot.addAction(&tableLimiterAction, 100);
    robot.addAction(&limiterAction, 95);
    25 robot.addAction(&limiterFarAction, 90);
    robot.addAction(&gotoPoseAction, 50);

    }
    Citation Envoyé par console
    /home/chris/TFE/Classe/lib/Robot.cpp:15: error: expected identifier before string constant
    /home/chris/TFE/Classe/lib/Robot.cpp:15: error: expected ‘,’ or ‘...’ before string constant
    /home/chris/TFE/Classe/lib/Robot.cpp:17: error: expected identifier before string constant
    /home/chris/TFE/Classe/lib/Robot.cpp:17: error: expected ‘,’ or ‘...’ before string constant
    /home/chris/TFE/Classe/lib/Robot.cpp:19: error: expected identifier before string constant
    /home/chris/TFE/Classe/lib/Robot.cpp:19: error: expected ‘,’ or ‘...’ before string constant
    /home/chris/TFE/Classe/lib/Robot.cpp: In constructor ‘Robot::Robot()’:
    /home/chris/TFE/Classe/lib/Robot.cpp:27: error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say ‘&Robot::limiterAction’
    /home/chris/TFE/Classe/lib/Robot.cpp:27: error: no matching function for call to ‘ArRobot::addAction(ArActionLimiterForwards (Robot::*)(int), int)’
    je suis une quiche en C++ , so please helppp ^^

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ArActionLimiterForwards limiterAction("speed limiter near", 300, 600, 250);
    ArActionLimiterForwards limiterFarAction("speed limiter far", 300, 1100, 400);
    On dirait un joli mix entre déclaration et appel de fonction

    Je pense que tu voulais plutôt écrire un truc de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ArActionLimiterForwards limiterAction(const char*, int, int, int);
    ArActionLimiterForwards limiterFarAction(const char*, int, int, int);
    Ou alors tu tentais de construire une donnée membre directement, auquel cas il faut utiliser la liste d'initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Robot
    {
    ArActionLimiterForwards limiterAction;
    ArActionLimiterForwards limiterFarAction;
    };
     
     
    Robot::Robot() :
        limiterAction("speed limiter near", 300, 600, 250),
        limiterFarAction("speed limiter far", 300, 1100, 400)
    {

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 88
    Par défaut
    oui, je voulais faire une donnée membre en fait, je pensais qu'on pouvait les instancié directement dans la déclaration.

    Mais ca ne résout pas le pb, ca le déplace
    Citation Envoyé par code
    class Robot
    {

    public :

    Robot();

    ArRobot robot;

    void moveToStartPosition();
    void moveToPosition(int x,int y);
    ArRobot getRobot();

    ArActionGoto gotoPoseAction;
    ArSonarDevice sonarDev;
    ArActionLimiterTableSensor tableLimiterAction ;
    ArActionLimiterForwards limiterFarAction;
    ArActionLimiterForwards limiterAction;

    };


    Robot::Robot()
    {

    28 limiterAction("speed limiter near", 300, 600, 250);
    29 limiterFarAction("speed limiter far", 300, 1100, 400);
    30 gotoPoseAction("goto");

    robot.addRangeDevice(&sonarDev);
    robot.addAction(&tableLimiterAction, 100);
    robot.addAction(&limiterAction, 95);
    robot.addAction(&limiterFarAction, 90);
    robot.addAction(&gotoPoseAction, 50);

    }

    Citation Envoyé par Console
    /home/chris/TFE/Classe/lib/Robot.cpp: In constructor ‘Robot::Robot()’:
    /home/chris/TFE/Classe/lib/Robot.cpp:28: error: no match for call to ‘(ArActionLimiterForwards) (const char [19], int, int, int)’
    /home/chris/TFE/Classe/lib/Robot.cpp:29: error: no match for call to ‘(ArActionLimiterForwards) (const char [18], int, int, int)’
    /home/chris/TFE/Classe/lib/Robot.cpp:30: error: no match for call to ‘(ArActionGoto) (const char [5])’
    ici il ne me reconnait plus la fonctions, or je reprends tout les includes de mon fichiers de base. Existe t'il des fonctions qui ne peuvent être utilisé que dans le main ? ( ce qui serait vachement débile mais bon )

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Relis bien mon code, ce n'est pas comme ça que j'ai construit les données membres dans le constructeur

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 88
    Par défaut
    oki doki, en effet, c'etait subtil a voir la différence tx

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

Discussions similaires

  1. Pas d'idée de nom
    Par vermine dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/02/2009, 10h16
  2. Faire mumuse sur les URL : pas d'idées
    Par sliderman dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 10/06/2008, 16h07
  3. Pas d'idées pour ce problème | Excel |
    Par madnux dans le forum C++Builder
    Réponses: 10
    Dernier message: 30/03/2007, 18h40
  4. Pas d'IDE spécialisé dans la 3D ? Pourquoi ?
    Par Liiscar dans le forum Développement 2D, 3D et Jeux
    Réponses: 10
    Dernier message: 03/07/2006, 15h50
  5. Réponses: 1
    Dernier message: 14/02/2006, 14h43

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