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 :

u_char en char


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Sinon parenthèse: pour jongler entre des buffers de char* et des buffers de unsigned char*, un simple reinterpret_cast<> suffit. D'autant que dans ces échanges, on caste déjà comme des sauvages nos données.

    Maintenant, les const qui manquait ici, était un autre problème.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  2. #2
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    et j'ai beaucoup de mal
    et pourtant on peut pas dire que tu ais manqué d'aide...
    http://www.developpez.net/forums/viewtopic.php?t=307904

  3. #3
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    oui, et d'ailleur je vous remercie de votre aide sinon, je serais toujours bloqué au meme point.
    J'ai déja essayer le réinterprete_cast et sa ne marche pas! peut être que finalement mes classes précédente sont fausse!!

  4. #4
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    ça ne marche pas n'amène à rien. Il faut donner le bout de code en cause, et l'erreur rencontrée.

  5. #5
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    voila le code que j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void AnalyseurTraficEthernet::wrapperCallback(u_char *user,const struct pcap_pkthdr *hdr,const u_char *packet)
     {
    	 user=NULL;
    	 hdr=NULL;
    	 AnalyseurTraficEthernet * objAnalyseurTraficEthernet = (AnalyseurTraficEthernet*) ptObjetAnalyseurTraficEthernet;
    	 char * paquet (reinterpret_cast<const u_char *>(packet)); //l'erreur est la
    	 objAnalyseurTraficEthernet->callback(paquet); 
     }
    l'erreur est :
    invalid conversion from `const u_char*' to `char*'

    et si j'enleve le const, il me met met l'erreur suivante:
    invalid conversion from `u_char*' to `char*'

  6. #6
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Faut essayer de comprendre ce que tu fais... tu veux caster = forcer le type. Hormis le problème de syntaxe, là tu demandes de changer le type de packet en const u_char * alors qu'il est déjà ça.
    Je te donne le principe, à toi de transposer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LeTypeQueJeVeux paquet = reinterpret_cast< LeTypeQueJeVeux >( packet );

  7. #7
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    Le type que je veut c'est du char *, donc voila se que j'ai tapé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	 char * paquet = (reinterpret_cast<char *>(packet));
    d'aprés se que tu m'a écrit, sa doit etre comme sa.

    maintenant l'erreur est:

    reinterpret_cast from`const u_char*' to `char*' casts away const (or volatile)

  8. #8
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    De manière générale tu ne peux pas caster sauvagement un truc const en truc non-const.
    Essaye avec du const char*.

  9. #9
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Tu as parlé de const char *:
    et j'aimerais la mettre sous la forme:

    soit tu utilises const, soit il te faut créer une copie de tes données.
    C'est le même problème que là:
    http://c.developpez.com/faq/cpp/?pag...TRINGS_to_char

  10. #10
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    quand je fait se que tu m'a conseiller, cela ne me met plus de probleme lors de la conversion, mais sur la création de pointeur et sur l'envoie d'un signal!!!

  11. #11
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Je n'ai pas compris (tu as utilisé const ou une copie ?). Et encore une fois, c'est quoi et où le(s) probleme(s) ?

  12. #12
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    voisi tout le code source de mon probleme, et quand il y a une erreur elle apparaisse dans ces deux classe, sa c le point cpp:

    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
    void AnalyseurTraficEthernet::wrapperCallback(u_char *user,const struct pcap_pkthdr *hdr,const u_char *packet)
     {
    	 user=NULL;
    	 hdr=NULL;
    	 AnalyseurTraficEthernet * objAnalyseurTraficEthernet = (AnalyseurTraficEthernet*) ptObjetAnalyseurTraficEthernet;          <-erreur
    	const char * paquet = (reinterpret_cast<const char *>(packet));
    	 objAnalyseurTraficEthernet->callback(paquet); 
     }
     
     void AnalyseurTraficEthernet::callback(const char* paquet)
    {
    	TrameEthernet *trameEthernet = new TrameEthernet(paquet);
    	//emission du signale trameEthernet
    	emit signalTrame (trameEthernet);	<- erreur
    }
    maintenant dans le .h pour la déclaration du pointeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	extern void* ptObjetAnalyseurTraficEthernet;
    et celui du signal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	signals:
    	void signalTrame (TrameEthernet *);
    a ma premiere ligne d'erreur, il me dit une phrase qui apparait deux fois dans les erreurs:

    undefined reference to `ptObjetAnalyseurTraficEthernet'

    puis a ma deuxieme ligne d'erreur et me l'affiche deux fois aussi:

    undefined reference to `AnalyseurTraficEhernet::signalTrame(TrameEthernet*)'


    merci pour votre aide!!

  13. #13
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    undefined reference to `ptObjetAnalyseurTraficEthernet'
    T'as suivi les précédents conseils ? T'as regardé la FAQ C et fait ce qu'il faut pour gérer correctement ta variable globale ?

    undefined reference to `AnalyseurTraficEhernet::signalTrame(TrameEthernet*)'
    On peut voir le corps de la fonction en question ?

  14. #14
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    j'ai remanier tout le code, pour éviter qu'il bug et maintenant sa marche , je vous remercie pour tout vaut conseille!!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Cast u_char / char* en C
    Par Zaraki21 dans le forum C
    Réponses: 2
    Dernier message: 21/01/2011, 10h35
  2. Réponses: 3
    Dernier message: 02/07/2003, 16h24
  3. [PostgreSql] Problème de cadreage de char !!!
    Par moipastoi dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/05/2003, 18h01
  4. Réponses: 6
    Dernier message: 24/03/2003, 17h11
  5. Traitement d'un char* renvoyé par une DLL en C++
    Par LuluTchab dans le forum Langage
    Réponses: 4
    Dernier message: 22/03/2003, 21h48

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