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

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: sobrecarga de operador<< en: 17 Diciembre 2010, 12:07 pm
Tengo mas dudas:

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. class MiClase {
  8.  
  9. private:
  10. int num1;
  11. int num2;
  12.  
  13. public:
  14. MiClase(int x=0, int y=0) :
  15. num1(x), num2(y) {}
  16.  
  17. MiClase& operator=(const MiClase& mib) {
  18. num1 = 0;
  19. num2 = 0;
  20. num1 = mib.num1;
  21. num2 = mib.num2;
  22. return *this;
  23. }
  24.  
  25. // Getters
  26. int getnum1(void) const {
  27. return num1;
  28. }
  29.  
  30. int getnum2(void) const {
  31. return num2;
  32. }
  33. };
  34.  
  35. ostream& operator<<(ostream& os, const MiClase& miobj) {
  36. os << miobj.getnum1() << " " << miobj.getnum2();
  37. return os;
  38. }
  39.  
  40. int main(void) {
  41. MiClase a(1, 2), b(3, 4);
  42. cout << "Objeto a: " << a << endl;
  43. a = a;
  44. cout << "Objeto a despues de a = a: " << a << endl;
  45.  
  46.  
  47. return 0;
  48. }
  49.  
  50.  
  51.  

Ese operator<< lo podría opner como método de la clase y que hiciese la misma tarea? A  mi no se me ocurre porque cout no es objeto de Miclase.

Y otra cosa:
Como hago para que en el operador de asignación detecte que se trata del mismo objeto y no lo borre.

Algo como if(*this != objeto_pasado) {el resto del codigo }
Los operadores de comparación no funcionan así :(

Gracias chic@s
2  Programación / Programación C/C++ / sobrecarga de operador<< en: 16 Diciembre 2010, 14:54 pm
Bueenas. Estoy intentando hacer esto:

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. class MiClase {
  8.  
  9. private:
  10. int num1;
  11. int num2;
  12.  
  13. public:
  14. MiClase(int x=0, int y=0) :
  15. num1(x), num2(y) {}
  16.  
  17.  
  18. // Getters
  19. int getnum1(void) {
  20. return num1;
  21. }
  22.  
  23. int getnum2(void) {
  24. return num2;
  25. }
  26. };
  27.  
  28. ostream& operator<<(ostream& os, const MiClase& miobj) {
  29. cout << miobj.getnum1() << miobj.getnum2();
  30. return os;
  31. }
  32.  
  33. int main(void) {
  34. MiClase miobj(3, 0);
  35.  
  36. cout << miobj;
  37.  
  38.  
  39. return 0;
  40. }
  41.  

El error que me da:
Código:
../src/Test.cpp:29: error: passing ‘const MiClase’ as ‘this’ argument of ‘int MiClase::getnum1()’ discards qualifiers
../src/Test.cpp:29: error: passing ‘const MiClase’ as ‘this’ argument of ‘int MiClase::getnum2()’ discards qualifiers

Alguien me echa una manita?

Gracias anticipadas.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines