Código
#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class Vector2D { public: //atributos float x; float y; public: //métodos Vector2D(float xv=0.0f,float yv=0.0f); virtual ~Vector2D(); float modulo(); //modulo del vector float argumento(); //argumento del vector Vector2D Unitario(); //devuelve un vector unitario Vector2D operator - (Vector2D &);//resta de vectores Vector2D operator + (Vector2D &);//suma de vectores float operator *(Vector2D &); //producto escalar Vector2D operator *(float); //producto por un escalar }; #endif // !defined(AFX_VECTOR2D_H__86ED85F9_9ED7_4672_9273_C1BB38271909__INCLUDED_)
Código
// Vector2D.cpp: implementation of the Vector2D class. // ////////////////////////////////////////////////////////////////////// #include "Vector2D.h" #include <math.h> ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// Vector2D::Vector2D(float xv,float yv) { x=xv; y=yv; } Vector2D::~Vector2D() { } float Vector2D::modulo() { return (float)sqrt(x*x+y*y); } float Vector2D::argumento() { return (float)atan2(y,x); } Vector2D Vector2D::operator - (Vector2D &v) { Vector2D res; res.x=x-v.x; res.y=y-v.y; return res; } Vector2D Vector2D::operator + (Vector2D &v) { Vector2D res; res.x=x+v.x; res.y=y+v.y; return res; } float Vector2D::operator *(Vector2D &v) { return x*v.x+y*v.y; } Vector2D Vector2D::operator *(float f) { Vector2D res; res.x=x*f; res.y=y*f; return res; } Vector2D Vector2D::Unitario() { Vector2D retorno(x,y); float mod=modulo(); if(mod>0.00001) { retorno.x/=mod; retorno.y/=mod; } return retorno; }
pero de alguna manera al llamarla
Código
// Bonus.cpp: implementation of the Bonus class. // ////////////////////////////////////////////////////////////////////// #include "Bonus.h" #include <GL/glut.h> #include <stdlib.h> ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// Bonus::Bonus() { //movimiento gravitatorio //velocidad vertical inicial aceleracion.y=-9.8; velocidad.y=5; lado=0.5f; } Bonus::~Bonus() { } void Bonus::Dibuja() { glPushMatrix(); glTranslatef(posicion.x,posicion.y,0); glRotatef(30,1,1,1); glColor3f( rand()/(float)RAND_MAX, rand()/(float)RAND_MAX, rand()/(float)RAND_MAX);//color aleatorio glutSolidCube(lado); glPopMatrix(); } void Bonus::Mueve(float t) { posicion=posicion+ velocidad*t+ aceleracion*(0.5f*t*t); velocidad=velocidad+aceleracion*t; } void Bonus::SetPos(float ix, float iy) { posicion.x=ix; posicion.y=iy; }
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 ..............................