Título: Constructores C++
Publicado por: Palante en 12 Febrero 2017, 16:52 pm
Hola, estaba practicando con constructores en C++, y no me acaba de compilar este ejercicio en C++, me salen muchos errores, y soy muy malo interpretando los mensajes del compilador, me vendrían muy bien vuestros consejos ;D ;D este es el código: //Constructores #include<iostream> using namespace std; class Persona { private: string Nombre; public: Persona () { Nombre = "Sin Nombre"; } Persona (string_Nombre) { Nombre =_Nombre; } string Getnombre () { return Nombre;} }; int main (void) { Persona Mipersona ("Alex"), Otrapersona ("Sergio"); Persona Sinpersona; cout<<Mipersona.GetNombre(); cout<<endl; cout<<Otrapersona.Getnombre(); cout<<endl; cout<<Sinpersona.Getnombre(); cout<<endl; }
Estos son los errores: lagrima.cpp:25:1: error: field ‘string_Nombre’ has incomplete type ‘Persona’ } ^ lagrima.cpp:8:7: note: definition of ‘class Persona’ is not complete until the closing brace class Persona { ^ lagrima.cpp:25:1: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 } ^ lagrima.cpp:25:1: error: expected ‘;’ at end of member declaration lagrima.cpp:30:1: error: expected ‘;’ after class definition } ^ lagrima.cpp: In function ‘int main()’: lagrima.cpp:34:26: error: no matching function for call to ‘Persona::Persona(const char [5])’ Persona Mipersona ("Alex"), Otrapersona ("Sergio"); ^ lagrima.cpp:17:1: note: candidate: Persona::Persona() Persona () { ^ lagrima.cpp:17:1: note: candidate expects 0 arguments, 1 provided lagrima.cpp:8:7: note: candidate: Persona::Persona(const Persona&) class Persona { ^ lagrima.cpp:8:7: note: no known conversion for argument 1 from ‘const char [5]’ to ‘const Persona&’ lagrima.cpp:34:51: error: no matching function for call to ‘Persona::Persona(const char [7])’ Persona Mipersona ("Alex"), Otrapersona ("Sergio"); ^ lagrima.cpp:17:1: note: candidate: Persona::Persona() Persona () { ^ lagrima.cpp:17:1: note: candidate expects 0 arguments, 1 provided lagrima.cpp:8:7: note: candidate: Persona::Persona(const Persona&) class Persona { ^ lagrima.cpp:8:7: note: no known conversion for argument 1 from ‘const char [7]’ to ‘const Persona&’ lagrima.cpp:38:17: error: ‘class Persona’ has no member named ‘GetNombre’ cout<<Mipersona.GetNombre(); ^
agradezco vuestra ayuda,muchas gracias
Título: Re: Constructores C++
Publicado por: engel lex en 12 Febrero 2017, 18:26 pm
error: field ‘string_Nombre’ has incomplete type error: no matching function for call to ‘Persona::Persona(const char [5]) no known conversion for argument 1 from ‘const char [5]’ to ‘const Persona&’ Persona (string_Nombre) {
string_Nombre no tiene tipo, creo que quisiste decir Persona (string _Nombre) {
eso resuelve casi todo los problemas, ya que si la variable no tiene tipo, se considera del tipo de la clase el otro error te lo dejo, es facil de ver
Título: Re: Constructores C++
Publicado por: Palante en 12 Febrero 2017, 19:30 pm
efectivamente, ahora solo me sale un error, pero veo mi función main y no veo error: int main (void) {
Persona Mipersona ("Alex"), Otrapersona ("Sergio");
Persona Sinpersona;
cout<<Mipersona.GetNombre();
cout<<endl;
cout<<Otrapersona.Getnombre(); cout<<endl; cout<<Sinpersona.Getnombre(); cout<<endl;
} no veo error ahí ;D Gracias
Título: Re: Constructores C++
Publicado por: engel lex en 12 Febrero 2017, 19:41 pm
que error ? recuerda como es esto... copy paste siempre de los errores
Título: Re: Constructores C++
Publicado por: JS3 en 14 Febrero 2017, 02:10 am
Hola estas declarando mal, trata con esto Persona miPersona = new Persona("Alex"); Persona otraPersona = new Persona("Sergio");
Título: Re: Constructores C++
Publicado por: class_OpenGL en 14 Febrero 2017, 08:59 am
Hola estas declarando mal, trata con esto Persona miPersona = new Persona("Alex"); Persona otraPersona = new Persona("Sergio");
Eso es en Java. cout<<Mipersona.GetNombre();
El método es Getnombre, sin mayúscula en la N
Título: Re: Constructores C++
Publicado por: dato000 en 14 Febrero 2017, 14:17 pm
Hola estas declarando mal, trata con esto Persona miPersona = new Persona("Alex"); Persona otraPersona = new Persona("Sergio");
Eso es en Java. cout<<Mipersona.GetNombre();
El método es Getnombre, sin mayúscula en la N En c++ también puede usarse el operador new, de hecho, fue en c++ donde se empezo a usar ese tipo de declaración, aunque es relativamente diferente al que se usa en java y c#.
Título: Re: Constructores C++
Publicado por: class_OpenGL en 14 Febrero 2017, 15:24 pm
Si, pero new retorna puntero a obtejo, y ahi no se estan declarando punteros
|