Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: noob2012 en 28 Mayo 2013, 16:50 pm



Título: Programa sencillo: ¿Qué significa este error?
Publicado por: noob2012 en 28 Mayo 2013, 16:50 pm
Hola a todos, estoy haciendo mi primer programa utilizando una clase en un archivo .h, las definiciones de las funciones miembro en un archivo .cpp, y un archivo de main.

En el archivo de main me sale este error:

Line 10 error:request for member ' aumentarCuenta' in 'miLibro', which is of non-class type 'Libro () ()'
Line 11 error:request for member ' mostrarCuenta' in 'miLibro', which is of non-class type 'Libro () ()'



Código:
//Archivo Libro.h


#ifndef LIBRO_H_INCLUDED
#define LIBRO_H_INCLUDED

#include <string>
using std::string;

class Libro
{
    public:
        Libro();
        void aumentarCuenta();
        void mostrarCuenta();

};

#endif // LIBRO_H_INCLUDED


Código:
//Archivo Libro.cpp


#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include "Libro.h"

Libro::Libro()
{
    Cuenta=0;
}

void Libro::aumentarCuenta()
{
    ++Cuenta;
}

void Libro::mostrarCuenta()
{
    cout<<"El valor aumentado de cuenta es "<< Cuenta<<endl;
}

Código:
//Archivo main.cpp

#include <iostream>
#include "Libro.h"

int main()
{
    Libro miLibro();

    miLibro.aumentarCuenta();
    miLibro.mostrarCuenta();
}





Título: Re: Programa sencillo: ¿Qué significa este error?
Publicado por: elkiy en 28 Mayo 2013, 18:56 pm
Hola esta mal tu codigo en los archivos, si bien Libro(); aparenta ser un constructor tenes que ponerle void en el .h.

Código
  1. #ifndef LIBRO_H_INCLUDED
  2. #define LIBRO_H_INCLUDED
  3.  
  4. #include <string>
  5. using std::string;
  6.  
  7. class Libro
  8. {
  9.    public:
  10.        void Libro(); // aqui edite.
  11.        void aumentarCuenta();
  12.        void mostrarCuenta();
  13.  
  14. };
  15.  
  16. #endif // LIBRO_H_INCLUDED

Luego  en el .cpp ponerle el void y Libro::

Código
  1. //Archivo Libro.cpp
  2.  
  3.  
  4. #include <iostream>
  5. using std::cout;
  6. using std::cin;
  7. using std::endl;
  8.  
  9. #include "Libro.h"
  10.  
  11. void Libro::Libro() // aqui edite
  12. {
  13.    Cuenta=0;
  14. }
  15.  
  16. void Libro::aumentarCuenta()
  17. {
  18.    ++Cuenta;
  19. }
  20.  
  21. void Libro::mostrarCuenta()
  22. {
  23.    cout<<"El valor aumentado de cuenta es "<< Cuenta<<endl;
  24. }

ESPERO QUE TE SIRVA.


Título: Re: Programa sencillo: ¿Qué significa este error?
Publicado por: noob2012 en 28 Mayo 2013, 19:07 pm
Ok! muchas gracias me sirvio tu ayuda!!


Título: Re: Programa sencillo: ¿Qué significa este error?
Publicado por: amchacon en 28 Mayo 2013, 21:27 pm
Hola esta mal tu codigo en los archivos, si bien Libro(); aparenta ser un constructor tenes que ponerle void en el .h.
No xD.

Estas convirtiendo un constructor en una función cualquiera. Lo que tenía puesto era correcto, lo que falla es al invocar al constructor:

Código
  1. Libro miLibro();

Si no tienes argumentos no se debe poner paréntesis :

Código
  1. Libro miLibro;


Título: Re: Programa sencillo: ¿Qué significa este error?
Publicado por: elkiy en 28 Mayo 2013, 21:41 pm
No xD.

Estas convirtiendo un constructor en una función cualquiera. Lo que tenía puesto era correcto, lo que falla es al invocar al constructor:

Código
  1. Libro miLibro();

Si no tienes argumentos no se debe poner paréntesis :

Código
  1. Libro miLibro;

si me di cuenta despues, hacia mucho no trabajaba con constructores. :P