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'argument dans une fonction


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 44
    Points : 13
    Points
    13
    Par défaut passage d'argument dans une fonction
    j'ai un petit problème de passage d'argument dans une fonction que je ne comprends pas.

    j'ai une classe Csock (pour créer des sockets) qui contient une surcharge du constructeur de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Csock(string address, int port,network_type TCPorUDP);
    jusque là rien de bien méchant !

    j'ai fais une classe Telnet qui gère une connexion telnet (logique !) qui contient un objet Csock (connexion sur le port 23). Elle a cette forme :
    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
    class Telnet
    {
        public:
     
        Telnet(); // contructeur utilisant comme argument par défaut
                    //172.17.0.194:23 pour la connexion telnet
        Telnet(std::string addr, int port); // contructeur prenant en argument  
                                                     //l'adresse et le port pour la connexion
                                                    //Telnet
        ~Telnet();
        std::string get_notify_addr();
        int get_notify_port();
        void set_notify_addr(std::string addr);
        void set_notify_port(int port);
     
        int sender(std::string commande);
        std::string reception();
     
        private:
     
    ...
        std::string notify_addr;
        int reader_port;
        Csock reader;
    };
    le problème c'est que quand j'essaie de compiler j'ai un problème à la construction de mon objet Telnet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: no match for call to `(Csock) (std::string&, int&, network_type)'
    alors que mon contructeur ne semble pas avoir de problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Telnet::Telnet()
    {
        notify_addr.assign( "172.17.0.194");
        notify_port = 23;
        reader(notify_addr, notify_port, TCP);
    };
    si quelqu'un a un idée, parce que là je suis à court, je comprends pas d'où peut venir mon problème.

    pour info, j'utilise code::blocks sous windows

    merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 59
    Points : 74
    Points
    74
    Par défaut
    Y'a un truc qui me parait bizard, tu cree ton reader en statique, et tu appelle un constructeur ensuite?

    Declare:

    CSock *reader;

    et dans ton constructeur:

    this->reader=new CSock(notify_addr, notify_port, TCP);

    Edit:

    Si tu veux le laisse en statique, il faut que tu creer une autre fonction dans ta classe CSock, equivalent à ton constructeur surchargé, genre: init(string address, int port,network_type TCPorUDP) et que tu l'appelle dans ton constructeur telnet.
    Mais c'est plus pratique en dynamique

  3. #3
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Points : 833
    Points
    833
    Par défaut
    Tes inclusions de headers sont t'elles correctes ? Pas d'inclusions cycliques ou référence croisées?
    Linux > *

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 44
    Points : 13
    Points
    13
    Par défaut
    oui pour les header pas de problèmes.

    j'ai isolé un peu le problème en essayant d'instancier directement un objet Csock dans une fonction main bateau (j'ai rien d'autre) et ça plante quand même.


    Sinon, york, ça marche aussi en passant par un pointeur, mais va falloir que je remodifie tout mon prog derrière en conséquence.

    Mais d'un autre côté, ce que je comprends pas, c'est que cette classe on l'a déjà utilisée ailleurs (pour la même chose), je n'ai pas eu de problèmes et la seule modification que j'ai faite depuis à été de changer le nom et de mettre en français les commentaire. c'est vraiment à se et

    en tout cas merci !

  5. #5
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Et pourquoi pas les listes d'initialisation :
    http://c.developpez.com/faq/cpp/?pag...EUR_liste_init

    Tu fais un constructeur avec des arguments par défaut, et tu utilises les listes d'initialisation pour créer ton reader.

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 44
    Points : 13
    Points
    13
    Par défaut
    ça passe pas, mais tant pis, j'ai encore trop de bug et trop peu de temps pour continuer à m'arracher les cheuveux là dessus, je reste avec la méthode de Yorke qui marche bien.

    merci quand même

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

Discussions similaires

  1. passage d'argument dans une fonction
    Par varfendell dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/08/2010, 13h43
  2. Pb de passage d'argument dans une fonction de classe maison
    Par deusyss dans le forum Général Python
    Réponses: 10
    Dernier message: 18/03/2010, 02h14
  3. Passage d'argument dans une fonction d'une autre classe.
    Par lavince dans le forum Général Python
    Réponses: 5
    Dernier message: 13/09/2008, 22h16
  4. Réponses: 6
    Dernier message: 24/12/2004, 16h46
  5. [langage] Passage de paramètres dans une fonction
    Par And_the_problem_is dans le forum Langage
    Réponses: 11
    Dernier message: 28/06/2004, 08h20

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