¿donde están los métodos que te devuelva eso que dices?
Solo veo 2 y ninguno te devuelve "raza, color y fecha".
Debes hacerlo o puede que no ayas copiado bien.
Lo unico que puedes hacer es guauguauguau y que descanso XDDD
void Perro::ladrar(){
cout<<"guau guau guau";
}
void Perro::sentarse(){
cout<<"que descanso";
}
falta la función que te imprima o lo que sea eso que dices ;)
Edito:
Bueno mirando mas afondo había mas errores y muymuy chungos XDDD
En el constructor de perro le vas a volver loco el compilador XDD
Perro(string
raza,string
color, int
fecha){
raza = raza; //El compilador no distingue cual le asiganas a cual
color = color; //El compilador no distingue cual le asiganas a cual
fecha = fecha; //El compilador no distingue cual le asiganas a cual
}
Si a cambio usas algo que diferencie las variables de la clase de las de la función.
yo suelo poner
su delante de las variables de la clase ejemplo "suRaza". Así dejo claro que se trata de la raza del perro.
Cuando invocamos el constructor de perro le pasamos "unaRaza" a "suRaza", creo que queda mas claro pois es mas facil para el compilador entender suRaza = unaRaza; que raza = raza;
Aun así c++ proviene de un sistema para resolver problemas de ambigüedad,
se llama el puntero this, pero creo que ya va a ser mucho para ti o no lo se.
this->raza = raza;
Te paso todo el ejemplo con su para distinguir y mas abajo con el puntero this también.
Código C++:
Ver original#include <iostream>
#include <stdlib.h>
using namespace std;
class Perro {
public:
Perro ( string unaRaza, string unColor, int unaEdad ) {
suRaza = unaRaza;
suColor = unColor;
suEdad = unaEdad;
}
void ladrar () const;
void sentarse() const;
void getinfo() const;
private:
string suRaza, suColor;
int suEdad;
};
void Perro::ladrar() const {
cout << "guau guau guau";
}
void Perro::sentarse() const {
cout << "que descanso";
}
void Perro::getinfo() const {
cout << "La raza es: " << suRaza << endl;
cout << "El color es: "<< suColor << endl;
cout << "La edad es: " << suEdad << endl;
}
int main () {
Perro benji = Perro ( "chanda", "blanco", 5 );
benji.getinfo();
cout << endl;
Perro toby = Perro ( "pastor aleman", "negro", 3 );
toby.getinfo();
cin.ignore();
}
Ahora el ejemplo que resuelve el problema de la ambigüedad.
Recuérdelo:
this es un
puntero que
apunta a su propio objeto creado. Si ponemos this delante de una variable nos referimos a la variable que pertenece a ese mismo objeto.
Si le pasamos una raza a raza
eso es invalido por que el compilador no sabe cual es cual.
Sin embargo si pongo this->raza, me refiero a la variable raza del "OBJETO" perro y eso si es valido.
Entonces si en una función intentamos pasar una raza a su raza y las 2 se llaman iguales con el puntero distinguimos una de otra.
Ejemplo this:
Código C++:
Ver original#include <iostream>
#include <stdlib.h>
using namespace std;
class Perro {
public:
Perro ( string raza, string color, int fecha ) {
this->raza = raza; //this apunta al objeto perro eso distingue raza que le pasamos de la raza del objeto perro
this->color = color; //this apunta al objeto perro eso distingue raza que le pasamos de la raza del objeto perro
this->fecha = fecha; //this apunta al objeto perro eso distingue raza que le pasamos de la raza del objeto perro
}
void ladrar () const;
void sentarse() const;
void getinfo() const;
private:
string raza, color;
int fecha;
};
void Perro::ladrar() const {
cout << "guau guau guau";
}
void Perro::sentarse() const {
cout << "que descanso";
}
void Perro::getinfo() const {
cout << "La raza es: " << raza << endl;
cout << "El color es: " << color << endl;
cout << "La edad es: " << fecha << endl;
}
int main () {
Perro benji = Perro ( "chanda", "blanco", 5 );
benji.getinfo();
cout << endl;
Perro toby = Perro ( "pastor aleman", "negro", 3 );
toby.getinfo();
cin.ignore();
}
ahora si salu