Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sytem200 en 19 Junio 2019, 10:05 am



Título: error en poo cuando compilo
Publicado por: sytem200 en 19 Junio 2019, 10:05 am
cuando compilo este code
Código:
#include<iostream>
#include<stdlib.h>
using namespace std;

class Persona{
    private:
        int edad;
        string nombre;
    public:
        Persona(int, string);
        void leer();
        void corre();
};
//constructor nos sirve para inicializar los atributos de la clase
Persona::Persona(int _edad, string _nombre){
    edad=_edad;
    nombre=_nombre;
}

void Persona::leer(){
    cout<<"soy"<<nombre<<"y estoy leendo"<<endl;
}
void Persona::corre(){
     cout<<"soy"<<nombre<<"y estoy corriendo"<<endl;
}
int main(){
    Persona p1=perror(20,"alejandro");  ->>> aca es donde me sale el error linea 27

 p1.leer();

 system("pause");
 return 0;
}


||=== Build: Debug in app (compiler: GNU GCC Compiler) ===|
||In function 'int main()':|
|27|error: invalid conversion from 'int' to 'const char*' [-fpermissive]|
|27|error: too many arguments to function 'void perror(const char*)'|
|481|note: declared here|
27|error: conversion from 'void' to non-scalar type 'Persona' requested|
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|



me sale estos tipos de errores en  Persona p1=perror(20,"alejandro");


Título: Re: error en poo cuando compilo
Publicado por: @XSStringManolo en 19 Junio 2019, 12:24 pm
Estás pasando 2 parámetros a perror. Solo acepta un string como parámetro. Tu le estás metiendo un int.
Tampoco entiendo para que quieres que p1 almacene el código del error.
No tienes ningún método para acceder a nombre.



Título: Re: error en poo cuando compilo
Publicado por: jmpesp en 20 Junio 2019, 07:09 am
cuando compilo este code
Código:
#include<iostream>
#include<stdlib.h>
using namespace std;

class Persona{
    private:
        int edad;
        string nombre;
    public:
        Persona(int, string);
        void leer();
        void corre();
};
//constructor nos sirve para inicializar los atributos de la clase
Persona::Persona(int _edad, string _nombre){
    edad=_edad;
    nombre=_nombre;
}

void Persona::leer(){
    cout<<"soy"<<nombre<<"y estoy leendo"<<endl;
}
void Persona::corre(){
     cout<<"soy"<<nombre<<"y estoy corriendo"<<endl;
}
int main(){
    Persona p1=perror(20,"alejandro");  ->>> aca es donde me sale el error linea 27

 p1.leer();

 system("pause");
 return 0;
}


||=== Build: Debug in app (compiler: GNU GCC Compiler) ===|
||In function 'int main()':|
|27|error: invalid conversion from 'int' to 'const char*' [-fpermissive]|
|27|error: too many arguments to function 'void perror(const char*)'|
|481|note: declared here|
27|error: conversion from 'void' to non-scalar type 'Persona' requested|
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|



me sale estos tipos de errores en  Persona p1=perror(20,"alejandro");

Tenes un error de tipeo. Parece que intentabas escribir "Persona" y el IDE que estas usando lo autocompleto a "perror."

Por otro lado, no hace falta la asignacion, basta con pasar los parametros al constructor de la clase al inicializarla:

Código:
Persona p1(20, "alejandro");

A menos que quieras almacenarlo en la heap, en ese caso si es necesario asignarle la direccion de memoria de la nueva instancia a el puntero:

Código:
Persona *p1 = new Persona(20, "alejandro");
p1->leer();