error en poo cuando compilo

Iniciado por sytem200, 19 Junio 2019, 10:05 AM

0 Miembros y 1 Visitante están viendo este tema.

sytem200

cuando compilo este code

#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");

@XSStringManolo

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.


jmpesp

Cita de: sytem200 en 19 Junio 2019, 10:05 AM
cuando compilo este code

#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:

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:

Persona *p1 = new Persona(20, "alejandro");
p1->leer();