Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Haddd en 04 de Noviembre de 2003, 07:53:09 PM

Título: Vstudio 2003
Publicado por: Haddd en 04 de Noviembre de 2003, 07:53:09 PM
 Acabo de instalar el VStudio 2003 y al compilar el proyecto me aparece un error que antes no me aparecía. La verdad es que para mi es un error del compilador...

camara.MoverOrigen(camara.m_Up*-(float)incy*incshift);

error C2664: 'void CXCamara::MoverOrigen(CXVector &)' : no se puede convertir el parámetro 1 de 'D3DXVECTOR3' a 'CXVector &'


Aquí está la clase CXVector
class CXVector:public D3DXVECTOR3 {
public:
   CXVector() {};
   CXVector(float xyz) { x=xyz;y=xyz;z=xyz; };
   CXVector(const CXVector &origen);
   CXVector(float x,float y,float z);
   CXVector &Normalizar();
   CXVector NormalizarNuevo();
   float ProductoEscalar(const CXVector &v);
   CXVector ProductoVectorial(const CXVector &v1);
   float Magnitud();
   void ResetAlMaximo();   // Asigna un nº máximo
   DWORD ConvertirA_RGBA(float fHeight);
   CXVector &operator /(float escalar);
   CXVector &operator *=(const CXMatriz &m);
   friend CXVector operator *(const CXVector &v,const CXMatriz &m);
   friend CXVector operator -(CXVector &a,CXVector &b);
   friend CXVector operator -(CXVector &a);
   friend CXVector operator +(CXVector &a,CXVector &b);
   friend CXVector operator *(CXVector &a,float escalar);
   friend CXVector operator *(float escalar,CXVector &a);
};

la funcion de la clase CXCamara

   void EstablecerOrigen(CXVector &From);


Como podeis ver, multiplicar el vector camara.m_Up*float devuelve un objeto CXVector!! No sé porque porras me aparece este error, además que siempre había funcionado!!!

¿Alguien puede ayudarme?
Título: Vstudio 2003
Publicado por: MChiz en 05 de Noviembre de 2003, 08:22:14 AM
 Hola!

incshift que es? Un escalar? Si es asi, no tienes definida esa operacion en tu clase. Estara utilizando:

operator * ( float s )

Y esta funcion la tiene la clase D3DXVECTOR, la cual devuelve un D3DXVECTOR y no puede convertirlo.
Espero que sea eso.

Un saludote!!
Título: Vstudio 2003
Publicado por: Haddd en 05 de Noviembre de 2003, 09:58:14 AM
 Si es un escalar, pero quedaría así:

camara.m_Up*-(float)incy*incshift

-(float)incy*incshift=float

camara.m_Up=CXVector

Queda:  CXVector*escalar

y eso sí está definido como un friend
Título: Vstudio 2003
Publicado por: Haddd en 06 de Noviembre de 2003, 03:08:14 PM
  :huh:
¿nadie puede ayudarme?
Título: Vstudio 2003
Publicado por: Haddd en 06 de Noviembre de 2003, 08:00:37 PM
 Ya lo he resuelto, tenía que poner const!!!

Se ve que el nuevo VStudoi es "muy quisquilloso"
Título: Vstudio 2003
Publicado por: DraKKaR en 06 de Noviembre de 2003, 09:39:36 PM
 No es ke el neuvo visuals ea muy kiskilloso, sino ke los anteriores lo eran poco. A mi me ha dado errores similares portando mi engine a linux y compilando con el gcc.
Título: Vstudio 2003
Publicado por: MChiz en 06 de Noviembre de 2003, 09:53:25 PM
 Donde tenias que poner el const? Me has picao :b
Título: Vstudio 2003
Publicado por: Haddd en 07 de Noviembre de 2003, 12:11:02 AM
 friend CXVector operator *(const CXVector &a,float escalar);
Título: Vstudio 2003
Publicado por: Grugnorr en 07 de Noviembre de 2003, 11:26:41 AM
 Cuando pases un objeto como parámetro de entrada, que sea siempre una referencia constante. (Siempre que sea un parámetro obligatorio, si es opcional un puntero para poder pasar NULL)