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

Responder a