Ecrire une fonction d'accès à un membre
Bonjour et bonne année.. :-)
J'ai la classe suivante
Code:
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
Template dans classe imbriquée et fichier cpp
Bonjour, je reviens avec ma classe de vecteur de points:
Code:
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:
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