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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


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


Desconectado Desconectado

Mensajes: 638


Ver Perfil
clases en C++
« en: 25 Enero 2011, 04:20 am »

buenas señores necesito de su ayuda ,tengo este problema tengo dos ficheros de un main uno .CPP y  otro .H en el .H esta declarada una clase en C++ y en el .Cpp esta definida la clase creada en .H ahora como hago para poder linkear esas dos al main.Cpp gracias de antemano 


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: clases en C++
« Respuesta #1 en: 25 Enero 2011, 05:39 am »

Mira, te pongo un ejemplo, sacado del libro de Deitel, un poco de la clase "complejo" para el manejo de números complejos:
main.cpp:
Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4.  
  5. #include "complejo.h"
  6.  
  7. int main(void)
  8. {
  9. Complejo x;
  10. Complejo y(4.3, 8.2);
  11. Complejo z(3.3, 1.1);
  12.  
  13. cout << "x : " << endl;
  14. x.imprime();
  15. cout << "y : " << endl;
  16. y.imprime();
  17. cout << "z : " << endl;
  18. z.imprime();
  19.  
  20. x = y + z;
  21. cout << " x = y + z : " << endl;
  22. x.imprime();
  23.  
  24. x = y - z;
  25. cout << "x = y - z : " << endl;
  26. cout << x;
  27.  
  28. if(x == y)
  29. cout << "Iguales" << endl;
  30. else
  31. cout << "Diferentes" << endl;
  32.  
  33. Complejo a;
  34. Complejo b;
  35.  
  36. if(a != b)
  37. {
  38. cout << "Distintos" << endl;
  39. } else {
  40. cout << "Iguales" << endl;
  41. }
  42. return 0;
  43. }
  44.  

complejo.h
Código
  1. // complejo.h
  2. #ifndef COMPLEJO_H
  3. #define COMPLEJO_H
  4. #include <iostream>
  5. using std::ostream;
  6. class Complejo
  7. {
  8. // Interfaz pública:
  9.  
  10. public:
  11.  
  12. friend ostream &operator<<(ostream &, const Complejo &);
  13. friend ostream &operator>>(ostream &, const Complejo &);
  14.  
  15. Complejo(double = 0.0, double = 0.0);
  16. Complejo operator+(const Complejo &) const;
  17. Complejo operator-(const Complejo &) const;
  18.  
  19. bool operator==(const Complejo&) const;
  20. bool operator!=(const Complejo&) const;
  21.  
  22. void imprime(void) const;
  23.  
  24. private:
  25.  
  26. double real; // Parte real
  27. double imaginaria; // Parte imaginaria.
  28. };
  29.  
  30. #endif
  31.  

complejo.cpp:

Código
  1. // complejo.cpp
  2. #include <iostream>
  3. using std::cout;
  4.  
  5. #include "complejo.h"
  6.  
  7. Complejo::Complejo(double parteReal, double parteImaginaria) : real(parteReal), imaginaria(parteImaginaria)
  8. {
  9. // Parte vacía.
  10. }
  11.  
  12. // Operador sobrecargado +
  13. Complejo Complejo::operator+(const Complejo &operando2) const
  14. {
  15. return Complejo(real + operando2.real, imaginaria + operando2.imaginaria);
  16. }
  17.  
  18. // Operador sobrecargado -
  19. Complejo Complejo::operator-(const Complejo &operando2) const
  20. {
  21. return Complejo(real - operando2.real, imaginaria - operando2.imaginaria);
  22. }
  23.  
  24. void Complejo::imprime(void) const
  25. {
  26. cout << '(' << real << ", " << imaginaria << "i)" << std::endl;
  27. }
  28.  
  29. ostream &operator<<(ostream& salida, const Complejo& complejo)
  30. {
  31. salida << '(' << complejo.real << ", " << complejo.imaginaria << "i)" << std::endl;
  32. }
  33.  
  34. // Operadores sobrecargados
  35.  
  36. bool Complejo::operator==(const Complejo &complejo) const
  37. {
  38. return (*this).real == complejo.real && (*this).imaginaria == complejo.imaginaria;
  39. }
  40.  
  41. bool Complejo::operator!=(const Complejo &complejo) const
  42. {
  43. return !((*this).real == complejo.real && (*this).imaginaria == complejo.imaginaria);
  44. }
  45.  

Como ves, es sencillo.


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
mapers


Desconectado Desconectado

Mensajes: 638


Ver Perfil
Re: clases en C++
« Respuesta #2 en: 25 Enero 2011, 06:06 am »

ese ejemplo si lo tengo men tmb el libro de  deitel :D mira me sale este error

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

que significa este error ............................... en el codigo que estoy ahciendo
« Última modificación: 25 Enero 2011, 06:09 am por mapers » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: clases en C++
« Respuesta #3 en: 25 Enero 2011, 06:17 am »

Necesitas poner los códigos fuente.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
mapers


Desconectado Desconectado

Mensajes: 638


Ver Perfil
Re: clases en C++
« Respuesta #4 en: 25 Enero 2011, 06:21 am »

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. void Bonus::Mueve(float t)
  39. {
  40. posicion=posicion + velocidad*t + aceleracion*(0.5f*t*t);
  41. velocidad=velocidad+aceleracion*t;
  42. }
  43.  
  44. void Bonus::SetPos(float ix, float iy)
  45. {
  46. posicion.x=ix;
  47. posicion.y=iy;
  48. }
  49.  
  50.  
Código
  1.  
  2. #if _MSC_VER > 1000
  3. #pragma once
  4. #endif // _MSC_VER > 1000
  5.  
  6. #include "Vector2D.h" // Added by ClassView
  7.  
  8. class Bonus  
  9. {
  10. public:
  11. void SetPos(float ix,float iy);
  12. Bonus();
  13. virtual ~Bonus();
  14.  
  15. void Mueve(float t);
  16. void Dibuja();
  17. private:
  18. float lado;
  19. Vector2D posicion;
  20. Vector2D velocidad;
  21. Vector2D aceleracion;
  22. };
  23.  
  24. #endif // !defined(AFX_BONUS_H__0EE7EF41_0205_4320_8F97_4AFEB50418B8__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.  

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.  



el error me sale aca void Bonus::Mueve(float t)

Leo no te puedo pasar los archivos a tu corre a ver si me das una mano o por aka numas tu diras .................
« Última modificación: 25 Enero 2011, 07:35 am por mapers » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Clases en VB
Programación Visual Basic
Kizar 0 1,192 Último mensaje 17 Marzo 2006, 16:56 pm
por Kizar
clases
Programación Visual Basic
elmaro 2 1,721 Último mensaje 12 Septiembre 2006, 05:51 am
por elmaro
Clases
.NET (C#, VB.NET, ASP)
TheGhost(Z) 4 2,940 Último mensaje 14 Febrero 2011, 18:15 pm
por Edu
Clases abtractas
Java
Shakos 4 2,973 Último mensaje 7 Mayo 2011, 19:40 pm
por Shakos
¿que se representa en las clases y diagramas de clases uml?
Programación General
Filantropo 2 2,878 Último mensaje 22 Diciembre 2020, 02:43 am
por Filantropo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines