@Satu:
No, en realidad no es necesario en este caso declarar la definición junto con la declaración puesto que la definición es encontrada.
@adam96
Bienvenido al foro!
Lo que sucede es que utilizas un objeto constante que no puede ser modificado desde miembros que si pueden modificar. Cuando haces esto:
Estas llamando a getnum1 desde "const MiClase& miobj".
Ahora bien, para solucionarlo, basicamente el procedimiento a seguir es asegurarte que ni getnum1 ni getnum2 van a intentar modificar lo que en un principio no esta puesto para modificarse, -const- y si se esta seguro que nada se va a modificar, se declara la función de esta forma:
Que equivale a que getnum1 diga: "Envíame lo que quieras que yo no modifico nada "
El código debería quedarte así:
No lo he probado pero es seguro eso. Cualquier cosa, ya sabes.
Saludos!
No, en realidad no es necesario en este caso declarar la definición junto con la declaración puesto que la definición es encontrada.
@adam96
Bienvenido al foro!
Lo que sucede es que utilizas un objeto constante que no puede ser modificado desde miembros que si pueden modificar. Cuando haces esto:
Código (cpp) [Seleccionar]
miobj.getnum1()
Estas llamando a getnum1 desde "const MiClase& miobj".
Ahora bien, para solucionarlo, basicamente el procedimiento a seguir es asegurarte que ni getnum1 ni getnum2 van a intentar modificar lo que en un principio no esta puesto para modificarse, -const- y si se esta seguro que nada se va a modificar, se declara la función de esta forma:
Código (cpp) [Seleccionar]
int getnum1(void) const {
return num1;
}
int getnum2(void) const {
return num2;
}
Que equivale a que getnum1 diga: "Envíame lo que quieras que yo no modifico nada "
El código debería quedarte así:
Código (cpp) [Seleccionar]
#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) const {
return num1;
}
int getnum2(void) const {
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;
}
No lo he probado pero es seguro eso. Cualquier cosa, ya sabes.
Saludos!