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 :

erreur incompréhensible (meme fonction, meme utilisation mais pb ..)


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Points : 59
    Points
    59
    Par défaut erreur incompréhensible (meme fonction, meme utilisation mais pb ..)
    bonjour,

    j'ai deux classe différente qui utilise une fonction déclaré dans un .h et .cpp.

    Pour utiliser cette fonction, je fais un #include "monPth.h"

    et apres j'utilise la fonction.

    le seul problème c'est que ca passe sur une classe mais pas dans l'autre!!!!

    voila l'erreur généré dans le cpp de ma 2ème classe.
    IP.cpp(23) : error C2064: le terme ne correspond pas à une fonction qui prend les arguments 2
    voila les déclarations/utilisation dans les différentes classes:
    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
    29
    30
     
    //classe ip (IP.cpp)
    unsigned short cksum = checksum((unsigned short *)this, sizeof(IP)); //génère l'erreur!
     
    //classe icmp (ICMP.cpp)
    unsigned short cksum = checksum((unsigned short *) this, sizeof(ICMP)); //pas de pb!
     
    //code de la fonction checksum:
    unsigned short checksum(unsigned short *buffer, int size)
    {
    	unsigned long cksum=0;
     
    	while(size >1) 
    	{
    		cksum+=*buffer++;
    		size -=sizeof(unsigned short);
    	}
     
    	if(size)
    	{
    		cksum += *(unsigned char*)buffer;
    	}
     
    	cksum = (cksum >> 16) + (cksum & 0xffff);
    	cksum += (cksum >>16);
     
    	/* ~ est l'opérateur de complément à un sur les nombres binaires.
    	Il inverse tous les bits: 0 devient 1 et 1 devient 0*/
    	return (unsigned short)(~cksum);
    }
    une idée sur une telle erreur?
    Visual Studio .net 2003

  2. #2
    Membre averti
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Points : 387
    Points
    387
    Par défaut
    Hello,

    Citation Envoyé par poporiding
    bonjour,

    j'ai deux classe différente qui utilise une fonction déclaré dans un .h et .cpp.

    Pour utiliser cette fonction, je fais un #include "monPth.h"

    et apres j'utilise la fonction.

    le seul problème c'est que ca passe sur une classe mais pas dans l'autre!!!!

    voila l'erreur généré dans le cpp de ma 2ème classe.


    voila les déclarations/utilisation dans les différentes classes:
    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
    29
    30
     
    //classe ip (IP.cpp)
    unsigned short cksum = checksum((unsigned short *)this, sizeof(IP)); //génère l'erreur!
     
    //classe icmp (ICMP.cpp)
    unsigned short cksum = checksum((unsigned short *) this, sizeof(ICMP)); //pas de pb!
     
    //code de la fonction checksum:
    unsigned short checksum(unsigned short *buffer, int size)
    {
    	unsigned long cksum=0;
     
    	while(size >1) 
    	{
    		cksum+=*buffer++;
    		size -=sizeof(unsigned short);
    	}
     
    	if(size)
    	{
    		cksum += *(unsigned char*)buffer;
    	}
     
    	cksum = (cksum >> 16) + (cksum & 0xffff);
    	cksum += (cksum >>16);
     
    	/* ~ est l'opérateur de complément à un sur les nombres binaires.
    	Il inverse tous les bits: 0 devient 1 et 1 devient 0*/
    	return (unsigned short)(~cksum);
    }
    une idée sur une telle erreur?
    Ton compilo dit que checksum n'est pas une fonction dans IP.cpp
    Des idées :
    - est-ce que le .h est de la fonction checksum() est bien inclus ?
    - n'y a t-il pas dans IP.cpp une variable dans le programme qui s'appelle checksum et qui est visible au niveau de l'appel à la fonction ?

    A+

  3. #3
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 134
    Points : 59
    Points
    59
    Par défaut
    si, une variable du meme nom que la fonction ...

    merci.
    Visual Studio .net 2003

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/02/2015, 16h59
  2. Plusieurs thread et une meme fonction
    Par azmimik dans le forum Général Python
    Réponses: 2
    Dernier message: 03/08/2007, 23h32
  3. [C#][Débutant] Comment appeler la meme fonction depuis plusieurs items d un menu
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 7
    Dernier message: 27/04/2006, 19h39
  4. Deux librairies implémentant les mêmes fonctions ?
    Par gangsoleil dans le forum Linux
    Réponses: 3
    Dernier message: 26/01/2006, 10h37
  5. Réponses: 4
    Dernier message: 29/09/2005, 11h50

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