Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Vstudio 2003

Iniciado por Haddd, 04 de Noviembre de 2003, 07:53:09 PM

« anterior - próximo »

Haddd

 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?

MChiz

 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!!

Haddd

 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

Haddd

  :huh:
¿nadie puede ayudarme?

Haddd

 Ya lo he resuelto, tenía que poner const!!!

Se ve que el nuevo VStudoi es "muy quisquilloso"

DraKKaR

 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.

MChiz

 Donde tenias que poner el const? Me has picao :b

Haddd

 friend CXVector operator *(const CXVector &a,float escalar);

Grugnorr

 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)
hat the hells!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.