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 :

Ecrire une fonction d'accès à un membre


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 113
    Par défaut Ecrire une fonction d'accès à un membre
    Bonjour et bonne année.. :-)

    J'ai la classe suivante
    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
     
    template <class X= double, class Y = double>
    class Curve
    {
    public:
    	template <class X= double, class Y = double>
    	class Point
    	{
    	private:
    		X x_;
    		Y y_;
    	public:
    		X x() const{return x_;}
    		Y y() const{return y_;}
    		//******///
                }
     
     
    	vector<Point<X,Y> >  v() const {return v_;}
    	//******//
    private:
    	vector<Point<X,Y> > v_;
    LE but est de creer une courbe de points (avec des templates) et ce via un vecteur de points (x,y)

    Le problème se situe au niveau de l'accès à l'abcisse du point i par exemple:
    j'aimerais ecrire qqch du style vx(i) au lieu de v()[i].x() (ou encore v_[i].x() )mais je ne vois pas comment ecrire la fonction (ou l'opérateur)..

    Merci beaucoup et bonne journée
    dh

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 113
    Par défaut Template dans classe imbriquée et fichier cpp
    Bonjour, je reviens avec ma classe de vecteur de points:
    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
     
    template <class X= double, class Y = double>
    class Curve
    {
    public:
    	template <class X= double, class Y = double>
    	class Point
    	{
    	private:
    		X x_;
    		Y y_;
    	public:
    		X x() const{return x_;}
    		Y y() const{return y_;}
    		//******///
                }
     
     
    	vector<Point<X,Y> >  v() const {return v_;}
    	//******//
    private:
    	vector<Point<X,Y> > v_;

    J'aimerais ne pas alourdir le code en mettant le code de chaque fonction memebre dans la déclaration de la classe.
    J'ai vu dans la FAQ comment mettre le code d'un template dans un .cpp, mais ici je voudrais sortir le code et le laisser dans le .h mais en dessous de la declaration de la classe...
    comme ceci par exemple:
    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
     
    template <class X= double, class Y = double>
    class Curve
    {
    public:
    	template <class X= double, class Y = double> class Point
    	{
    	private:
    		X x_;
    		Y y_;
    	public:
    		X x() const;
    		Y y() const;
    		//******///
    	}
    	vector<Point<X,Y> >  v() const ;
    	//******//
    private:
    	vector<Point<X,Y> > v_;
    }
    template <class X, class Y > X Curve<X,Y>::Point<X,Y> x() const{return x_;}
    template <class X, class Y > Y Curve<X,Y>::Point<X,Y> y() const{return y_;}
    template <class X, class Y > vector<Curve<X,Y>::Point<X,Y> > Curve<X,Y>::v() const {return v_;}
    mais évidemment ca ne marche pas....

    -> Si qqun sait m'aider ce serait vraiment sympa :-)
    merci et bonne journée
    DH

  3. #3
    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
    X vx(unsigned int i) const {return v_[i].x();}
    Y vy(unsigned int i) const {return v_[i].y();}


    Mais tu devrais retirer les paramètres template de la classe Point (qui sont ambigüs), elle prend déjà ceux de la classe englobante (Curve).

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    En passant, retourner un vecteur par valeur, ça me semble suspect. Surtout quand on parle d'efficacité...

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

Discussions similaires

  1. comment ecrire une fonction sortir
    Par momeftah dans le forum Administration système
    Réponses: 8
    Dernier message: 02/05/2007, 14h35
  2. [javascript] Ecrire une fonction "include"
    Par gscorpio dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/10/2006, 10h49
  3. [VB6]Ecrire une fonction dans ma feuille Excel
    Par ToxiK dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 08/06/2006, 20h04
  4. Réponses: 1
    Dernier message: 07/06/2006, 18h18
  5. Réponses: 15
    Dernier message: 15/12/2005, 14h36

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