Probaste pasar:
template <>
bool operator==(TPoint<double> PointA,TPoint<double> PointB)
{
if ( fabs(PointA.GetX()-PointB.GetX())<EPSILON &&
fabs(PointA.GetY()-PointB.GetY())<EPSILON )
return true;
return false;
}
¿al .cpp?
sds
On 9/20/07, Gonzalo Merayo <[EMAIL PROTECTED]> wrote:
> No me insultes...pero tenes un #endif al final del .h?
>
> On 9/20/07, personaje <[EMAIL PROTECTED]> wrote:
> > On 9/19/07, Francisco Dibar <[EMAIL PROTECTED]> wrote:
> >
> > > y fijate si tu mensaje de error es el mismo.
> > >
> >
> > claro, lo saqué de mi proyecto y no me da error (como a Uds), pero
> > encontré la vuelta: TPoint está en un .h que se incluye más de una vez
> > en distintos .cpp
> >
> > El código es el siguiente:
> >
> > ----------------8<----------------8<----------------8<----------------8<----------------8<----------------
> > #ifndef ATTRIBUTES_H_
> > #define ATTRIBUTES_H_
> >
> > #include <vector>
> > #include <string>
> > #include <math.h>
> >
> > //! Template para definir coordenadas de imagen
> > /**
> > * Es un template que define una coordenada en el plano 2D.
> > */
> > template <class T>
> > class TPoint
> > {
> > public:
> > //! Constructor
> > TPoint(T X=0,T Y=0):x_(X),y_(Y){};
> > //! Operador de copia que acepta cualquier TPoint y castea al dato propio
> > template <class T2>
> > TPoint(const TPoint<T2> &Point)
> >
> > {x_=static_cast<T>(Point.GetX());y_=static_cast<T>(Point.GetY());};
> > //! Acceso a X
> > T GetX()const{return x_;}
> > //! Acceso a Y
> > T GetY()const{return y_;}
> > //! Modificacion de X
> > void SetX(T x){x_=x;}
> > //! Modificacion de Y
> > void SetY(T y){y_=y;}
> > private:
> > T x_; ///< Coordenada X
> > T y_; ///< Coordenada Y
> > };
> >
> > // Operador == para el TPoint
> > template <class T1,class T2>
> > bool operator==(TPoint<T1> PointA,TPoint<T2> PointB)
> > {
> > return ((PointA.GetX()==PointB.GetX()) &&
> > (PointA.GetY()==PointB.GetY()));
> > }
> >
> > #define EPSILON 0.000000001
> >
> > // Operador == para el TPoint especializado en RealPoint
> > template <>
> > bool operator==(TPoint<double> PointA,TPoint<double> PointB)
> > {
> > if ( fabs(PointA.GetX()-PointB.GetX())<EPSILON &&
> > fabs(PointA.GetY()-PointB.GetY())<EPSILON )
> > return true;
> > return false;
> > }
> >
> > // Operador != para el TPoint
> > template <class T1,class T2>
> > bool operator!=(TPoint<T1> PointA,TPoint<T2> PointB)
> > {
> > return !(PointA==PointB);
> > }
> > ----------------8<----------------8<----------------8<----------------8<----------------8<----------------
> >
> > que anda para el caso de 1 .cpp que lo incluya, pero no para el caso
> > de 2 o más... acá es donde demuestro mi incompetencia... por qué pasa?
> >
> > Saludos
> >
> > _______________________________________________
> > Lista de correo Programacion.
> > [email protected]
> > http://listas.fi.uba.ar/mailman/listinfo/programacion
> >
>
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion