Programa sencillo: ¿Qué significa este error?

Iniciado por noob2012, 28 Mayo 2013, 16:50 PM

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

noob2012

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 () ()'



//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



//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;
}


//Archivo main.cpp

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

int main()
{
    Libro miLibro();

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




elkiy

Hola esta mal tu codigo en los archivos, si bien Libro(); aparenta ser un constructor tenes que ponerle void en el .h.

Código (cpp) [Seleccionar]
#ifndef LIBRO_H_INCLUDED
#define LIBRO_H_INCLUDED

#include <string>
using std::string;

class Libro
{
   public:
       void Libro(); // aqui edite.
       void aumentarCuenta();
       void mostrarCuenta();

};

#endif // LIBRO_H_INCLUDED


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

Código (cpp) [Seleccionar]
//Archivo Libro.cpp


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

#include "Libro.h"

void Libro::Libro() // aqui edite
{
   Cuenta=0;
}

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

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


ESPERO QUE TE SIRVA.

noob2012


amchacon

Cita de: Don Olivera en 28 Mayo 2013, 18:56 PMHola 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 (cpp) [Seleccionar]
Libro miLibro();

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

Código (cpp) [Seleccionar]
Libro miLibro;
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

elkiy

Cita de: amchacon en 28 Mayo 2013, 21:27 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 (cpp) [Seleccionar]
Libro miLibro();

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

Código (cpp) [Seleccionar]
Libro miLibro;

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