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 :

fonction incluse dans class


Sujet :

C++

  1. #1
    Membre averti
    Femme Profil pro
    optimisation
    Inscrit en
    Mars 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : optimisation

    Informations forums :
    Inscription : Mars 2017
    Messages : 13
    Par défaut fonction incluse dans class
    bonjour,
    je suis débutante en programmation et j'ai un travail assez sérieux a rendre.
    je commence par la première petite partie du mon travail, elle consiste a calculer les distances entres n points , le nombre n est variable selon l'instance
    et je veux définir chaque point librement, c-a-d a chaque fois je demande cout<<"donner les coordonnées du 1er point"<<endl;
    j'ai défini un class point et j'ai fait un boucle pour demander a chaque fois les coordonnées , mais une erreur c'est produite lors de faire la liaison entre la fonction distance et les coordonnées des points saisis, svp qq1 me propose ce qu'il me faut faire, voilà mon code:
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    #include <iostream>
    #include<math.h>
    #include<time.h>
     
    using namespace std;
     
     
    class client
    {
    public:
    float x;
    float y;
     
    static double distance(client c1, client c2);
     
    };
     
    double client::distance(client c1, client c2)
    {
    sqrt(pow((c1.x-c2.x),2)+pow((c1.y-c2.y),2));
    }
     
     
    int  i, j, a, b, nb =0;
     
    int main()
    {
    	client i; 
    	client j;
    		cout<< "entrer le nombre de client " << endl;
     
    		cin>> nb;
    		for (int i=1; i<=nb; i++ )
    		{
     
    		cout<<"entrer l'abscice du client "<<i<<":"<<endl;
    		cin>> a ;
    		cout<<"entrer le coordonné du client "<<i<<":"<<endl;
    		cin>>b;
    		}
     
    		for (int i=1; i<=nb; i++ )
    		{
    			for (int j=1; j<=nb; j++ )
    			{
    				while(i!=j)
    				{
    					client::distance(i,j);
    }
    }
    }
    	system("PAUSE");
    	return 0;
    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Avant de parler proprement code et des erreurs qu'il contient, parlons algorithme...

    Dans ta première boucle for qui suit la demande du nombre de clients, tu rentres les abscisses et coordonnées de chaque client. Mettons que l'on veuille rentrer les coordonnées de 2 clients (1,2) et (3,4).
    • Tu vas faire un premier tour et rentrer 1 et 2 dans les variables a et b tel que : a = 1 et b = 2.
    • Puis, tu vas faire un second tour et rentrer 3 et 4 dans ces mêmes variables a et b pour avoir a = 3 et b = 4.

    Que penses-tu qu'il soit advenu des valeurs 1 et 2 du précédent tour ?

  3. #3
    Membre averti
    Femme Profil pro
    optimisation
    Inscrit en
    Mars 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : optimisation

    Informations forums :
    Inscription : Mars 2017
    Messages : 13
    Par défaut
    oui t'as raison il vont etre supprimer , est ce qu'il me faut déclarer un tableau pour stocker ces valeurs?

  4. #4
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 513
    Par défaut
    Pour faciliter la compréhension de ceux qui lisent ton message :
    • Donne le message précis de ton compilateur.


    Concernant ton erreur de compilation, voici ce que dit GCC :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    main.cpp: In function 'int main()':
     
    main.cpp:55:21: error: no matching function for call to 'client::distance(int&, int&)'
     client::distance(i,j);
                         ^
     
    main.cpp:25:8: note: candidate: static double client::distance(client, client)
     double client::distance(client c1, client c2)
            ^~~~~~
     
    main.cpp:25:8: note:   no known conversion for argument 1 from 'int' to 'client'
    Si on traduit ça en français, cela donne :
    « Pour l'appel à client::distance(i,j), il n'y a pas de fonction client::distance qui prend en paramètre des entiers. Il existe bien une fonction client::distance qui prend en paramètre des client, mais client n'est pas convertible en entier. »

    Les i et j qui sont pris en compte sont int i=1; et int j=1; qui masquent client i; et client j;.

    A part ça, prend l'habitude de compiler avec les avertissements actifs. Avec GCC, les options -Wall -Wextra activent les principaux avertissements. Tu verras alors au moins une autre erreur dans le code.
    Tu peux même ajouter -Wshadow qui t'avertit quand il y a un masquage, comme avec tes variables int i=1; et int j=1; qui masquent client i; et client j;.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oui, c'est bien un tableau qu'il te faut pour pouvoir conserver tes valeurs. Et plus précisément un tableau de taille dynamique puisque tu ne connais pas sa taille à l'avance.
    En C++ ce sera std::vector.

Discussions similaires

  1. [ZF 1.11] Génération des fonction set dans classes model
    Par frjover dans le forum Zend Framework
    Réponses: 1
    Dernier message: 18/07/2012, 21h24
  2. Syntaxe fonction template dans classe template
    Par Aleph69 dans le forum C++
    Réponses: 6
    Dernier message: 15/07/2011, 15h32
  3. Réponses: 4
    Dernier message: 10/02/2005, 16h10
  4. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 11h42
  5. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33

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