elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  operator en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: operator en C++  (Leído 2,472 veces)
mapers


Desconectado Desconectado

Mensajes: 638


Ver Perfil
operator en C++
« en: 26 Enero 2011, 04:35 am »

buenas señores necesito de su ayuda  e declarado una funcion  con el operator
Código
  1.  
  2. #if _MSC_VER > 1000
  3. #pragma once
  4. #endif // _MSC_VER > 1000
  5.  
  6. class Vector2D  
  7. {
  8. public: //atributos
  9. float x;
  10. float y;
  11. public: //métodos
  12. Vector2D(float xv=0.0f,float yv=0.0f);
  13. virtual ~Vector2D();
  14.  
  15. float modulo(); //modulo del vector
  16. float argumento(); //argumento del vector
  17. Vector2D Unitario(); //devuelve un vector unitario
  18. Vector2D operator - (Vector2D &);//resta de vectores
  19. Vector2D operator + (Vector2D &);//suma de vectores
  20. float operator *(Vector2D &); //producto escalar
  21. Vector2D operator *(float); //producto por un escalar
  22. };
  23.  
  24. #endif // !defined(AFX_VECTOR2D_H__86ED85F9_9ED7_4672_9273_C1BB38271909__INCLUDED_)
  25.  
  26.  
Código
  1. // Vector2D.cpp: implementation of the Vector2D class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4.  
  5. #include "Vector2D.h"
  6. #include <math.h>
  7. //////////////////////////////////////////////////////////////////////
  8. // Construction/Destruction
  9. //////////////////////////////////////////////////////////////////////
  10.  
  11. Vector2D::Vector2D(float xv,float yv)
  12. {
  13. x=xv;
  14. y=yv;
  15. }
  16.  
  17. Vector2D::~Vector2D()
  18. {
  19.  
  20. }
  21. float Vector2D::modulo()
  22. {
  23. return (float)sqrt(x*x+y*y);
  24. }
  25. float Vector2D::argumento()
  26. {
  27. return (float)atan2(y,x);
  28. }
  29.  
  30. Vector2D Vector2D::operator - (Vector2D &v)
  31. {
  32. Vector2D res;
  33. res.x=x-v.x;
  34. res.y=y-v.y;
  35. return res;
  36. }
  37. Vector2D Vector2D::operator + (Vector2D &v)
  38. {
  39. Vector2D res;
  40. res.x=x+v.x;
  41. res.y=y+v.y;
  42. return res;
  43. }
  44. float Vector2D::operator *(Vector2D &v)
  45. {
  46. return x*v.x+y*v.y;
  47. }
  48. Vector2D Vector2D::operator *(float f)
  49. {
  50. Vector2D res;
  51. res.x=x*f;
  52. res.y=y*f;
  53. return res;
  54. }
  55. Vector2D Vector2D::Unitario()
  56. {
  57. Vector2D retorno(x,y);
  58. float mod=modulo();
  59. if(mod>0.00001)
  60. {
  61. retorno.x/=mod;
  62. retorno.y/=mod;
  63. }
  64. return retorno;
  65. }
  66.  


pero de alguna manera al llamarla
Código
  1. // Bonus.cpp: implementation of the Bonus class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4.  
  5. #include "Bonus.h"
  6. #include <GL/glut.h>
  7. #include <stdlib.h>
  8. //////////////////////////////////////////////////////////////////////
  9. // Construction/Destruction
  10. //////////////////////////////////////////////////////////////////////
  11.  
  12. Bonus::Bonus()
  13. {
  14. //movimiento gravitatorio
  15. //velocidad vertical inicial
  16. aceleracion.y=-9.8;
  17. velocidad.y=5;
  18. lado=0.5f;
  19. }
  20.  
  21. Bonus::~Bonus()
  22. {
  23.  
  24. }
  25.  
  26. void Bonus::Dibuja()
  27. {
  28. glPushMatrix();
  29. glTranslatef(posicion.x,posicion.y,0);
  30. glRotatef(30,1,1,1);
  31. glColor3f( rand()/(float)RAND_MAX,
  32. rand()/(float)RAND_MAX,
  33. rand()/(float)RAND_MAX);//color aleatorio
  34.     glutSolidCube(lado);
  35. glPopMatrix();
  36. }
  37.  
  38.  
  39. void Bonus::Mueve(float t)
  40. {
  41. posicion=posicion+ velocidad*t+ aceleracion*(0.5f*t*t);
  42. velocidad=velocidad+aceleracion*t;
  43. }
  44.  
  45. void Bonus::SetPos(float ix, float iy)
  46. {
  47. posicion.x=ix;
  48. posicion.y=iy;
  49. }
  50.  
  51.  

me tira este error :

49 C:\Proyectos DEV C++\pang\Bonus.cpp no match for 'operator+' in '((Bonus*)this)->Bonus::posicion + Vector2D::operator*(float)(t)'

 a que se deve estoy haciendo algo mal ..............................


En línea

Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: operator en C++
« Respuesta #1 en: 26 Enero 2011, 19:41 pm »

Fijate, no veo la declaracion de Bonus, pero en el operator + solo indicaste para sumar dos Vector2D, pero no un Vector2D con un float  (como tira el error en Bonus.cpp) .. así que toca declarar e implementar el operador sobrecargado para un float ..

Código
  1. Vector2D operator + (float );

Saludos

P.S: no se si querrás ser "cross-platform" con OpenGL, pero te comento que hay cosas como ese pragma once que no son portables ..


En línea

mapers


Desconectado Desconectado

Mensajes: 638


Ver Perfil
Re: operator en C++
« Respuesta #2 en: 27 Enero 2011, 04:13 am »

holas men  ya lo coloque pero me sigue tirando ese mismo error .............mira
Código
  1. #pragma once
  2. #endif // _MSC_VER > 1000
  3.  
  4. class Vector2D  
  5. {
  6. public: //atributos
  7. float x;
  8. float y;
  9. public: //métodos
  10. Vector2D(float xv=0.0f,float yv=0.0f);
  11. virtual ~Vector2D();
  12.  
  13. float modulo(); //modulo del vector
  14. float argumento(); //argumento del vector
  15. Vector2D Unitario(); //devuelve un vector unitario
  16. Vector2D operator - (Vector2D &);//resta de vectores
  17. Vector2D operator + (float );
  18. Vector2D operator + (Vector2D &);//suma de vectores
  19.  
  20. float operator *(Vector2D &); //producto escalar
  21. Vector2D operator *(float); //producto por un escalar
  22. };
  23.  
  24. #endif // !defined(AFX_VECTOR2D_H__86ED85F9_9ED7_4672_9273_C1BB38271909__INCLUDED_)
  25.  

ya lo declare como me dijistes pero me sigue saliendo el mismo error  a que se deve ..................... otra pregunta que es "cross-platform" en Opengl .estoy  interesado ............. weno pero primero ayudenme a compilar mi proyecto ,................
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cambiar página de inicio en OperaTor
Dudas Generales
_ 0 1,945 Último mensaje 17 Junio 2011, 15:38 pm
por _
Operator+ Original. ¿Cómo? « 1 2 »
Programación C/C++
ivancea96 19 7,770 Último mensaje 17 Julio 2013, 15:54 pm
por eferion
Red Team Operator - Malware Development Advanced Vol.1
Tutoriales - Documentación
ehn@ 0 1,613 Último mensaje 13 Octubre 2023, 20:26 pm
por ehn@
RED TEAM Operator: Windows Persistence
Tutoriales - Documentación
ehn@ 0 1,008 Último mensaje 30 Noviembre 2023, 12:40 pm
por ehn@
RED TEAM Operator: Malware Development Intermediate
Tutoriales - Documentación
ehn@ 0 1,031 Último mensaje 30 Noviembre 2023, 12:40 pm
por ehn@
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines