Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - adam96

#1
Programación C/C++ / Re: sobrecarga de operador<<
17 Diciembre 2010, 12:07 PM
Tengo mas dudas:


#include <iostream>
#include <string>
#include <vector>

using namespace std;

class MiClase {

private:
int num1;
int num2;

public:
MiClase(int x=0, int y=0) :
num1(x), num2(y) {}

MiClase& operator=(const MiClase& mib) {
num1 = 0;
num2 = 0;
num1 = mib.num1;
num2 = mib.num2;
return *this;
}

// Getters
int getnum1(void) const {
return num1;
}

int getnum2(void) const {
return num2;
}
};

ostream& operator<<(ostream& os, const MiClase& miobj) {
os << miobj.getnum1() << " " << miobj.getnum2();
return os;
}

int main(void) {
MiClase a(1, 2), b(3, 4);
cout << "Objeto a: " << a << endl;
a = a;
cout << "Objeto a despues de a = a: " << a << endl;


return 0;
}




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 C/C++ / sobrecarga de operador<<
16 Diciembre 2010, 14:54 PM
Bueenas. Estoy intentando hacer esto:


#include <iostream>
#include <string>
#include <vector>

using namespace std;

class MiClase {

private:
int num1;
int num2;

public:
MiClase(int x=0, int y=0) :
num1(x), num2(y) {}


// Getters
int getnum1(void) {
return num1;
}

int getnum2(void) {
return num2;
}
};

ostream& operator<<(ostream& os, const MiClase& miobj) {
cout << miobj.getnum1() << miobj.getnum2();
return os;
}

int main(void) {
MiClase miobj(3, 0);

cout << miobj;


return 0;
}


El error que me da:

../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.