elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Problema con una lista simplemente enlazada en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con una lista simplemente enlazada en C++  (Leído 243 veces)
Mike_EDD

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Problema con una lista simplemente enlazada en C++
« en: 4 Septiembre 2017, 22:14 »

Buenas, resulta que tengo un problema con una lista simplemente enlazada en C++, me aparece el siguiente error:

||=== Build: Debug in Activity_3 (compiler: GNU GCC Compiler) ===|
(en el main)||In function 'int main()':|
(en el main)|19|error: no matching function for call to 'Exitos::insertData(int, int&)'|
(en el main)|19|note: candidate is:|
(la lista.h)|46|note: void Exitos::insertData(int&, const int&)|
(la lista.h)|46|note:   no known conversion for argument 1 from 'int' to 'int&'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

aqui dejo el codigo:

//aqui esta el archivo de cabecera

#ifndef (nombre del archivo.h)_H_INCLUDED
#define (nombre del archivo.h)_H_INCLUDED

#include<exception> //esto lo podemos omitir
#include<iostream>

class Exitos{
private:
    int data[50];
    int last;

public:

    void inicialize();
    bool isEmpty();
    bool isFull();

    void insertData(int&, const int&);
    void deleteData(const int&);

    int getFirstPos();
    int getLastPos();
    int getPrevPos(const int&);
    int getNextPos(const int&);

    int finData();
    int retrieve(const int&);

};

void Exitos::inicialize()
{
    last = -1;
}

bool Exitos::isEmpty()
{
    return last == -1;
}

bool Exitos::isFull()
{
    return last == 49;
}

void Exitos::insertData(int& p, const int& e)
{
    if(isFull()){
        //aqui va una excepcion, la podemos omitir
    }
    if(p < -1 || p > last){
        //aqui va una excepcion, la podemos omitir
    }
    int i = last + 1;
    while(i > p){
        data[i+1] = data;
        i--;
    }
    data[p+1] = e;
    last++;
}

void Exitos::deleteData(const int& p)
{
    if(isFull()){
        //aqui va una excepcion, la podemos omitir
    }
    if(p < -1 || p > last){
       //aqui va una excepcion, la podemos omitir
    }
    int i = p;
    while(i < last){
        data = data[i+1];
        i++;
    }
    last--;
}

int Exitos::getFirstPos()
{
    if(isEmpty()){
        //aqui va una excepcion, la podemos omitir
    }
    return -1;
}

int Exitos::getLastPos()
{
    return last;
}

int Exitos::getPrevPos(const int& p)
{
    if(isEmpty() or p < 0 or p > last){
        return -1;
    }
    return p-1;
}

int Exitos::getNextPos(const int& p)
{
    if(isEmpty() or p < 0 or p > last - 1){
        return -1;
    }
    return p+1;
}

int Exitos::finData()
{
    //aqui va otra cosa pero lo podemos omitir
    return 0;
}

int Exitos::retrieve(const int& p)
{
    if(p < 0 or p > last){
        //aqui va una excepcion, la podemos omitir
    }
    return data[p];
}

#endif

//aqui esta el archivo .cpp

#include "(el archivo).h"

using namespace std; // iostream lo omito porque ya esta en la cabecera que cree

int main()
{
    Exitos uno;

    int mydatos, i;

    uno.inicialize();

    for(i=0; i<20; i++){
        mydatos = i;
        cout << "Insertando: " << mydatos << endl;

        uno.insertData(uno.getFirstPos(),mydatos);
    }
    cout << endl << endl << endl;
}

El error me da cuando quiero agregar la posición del elemento en insertData, estuve buscando en decenas de paginas y libros, pero todos los autores utilizan struct, en ninguna trabajan con programacion orientada a objetos, el unico error que me da es en el main, gracias por ayudar.


En línea

ivancea96


Conectado Conectado

Mensajes: 3.293


ASMático


Ver Perfil WWW
Re: Problema con una lista simplemente enlazada en C++
« Respuesta #1 en: 4 Septiembre 2017, 22:24 »

getFirstpos retorna un int. Como no lo guardas en ninguna variable, digamos que es un int ""volatil"" que va a desaparecer.
void Exitos::insertData(int& p, const int& e)
Pides una referencia a int, "int&". Requiere que se le pase un valor "localizado en memoria", como puede ser una variable. Pasar directamente el retorno de la función no sirve.

La pregunta aquí es: ¿Por qué necesitas que sea "int&"? Probablemente te sirva si pones "int" asecas.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Duda]Lista simplemente enlazada
Programación C/C++
Cervantes_xD 5 2,371 Último mensaje 5 Enero 2010, 01:20
por Cervantes_xD
Lista Simplemente enlazada ayuda
Programación C/C++
Cpp 1 544 Último mensaje 11 Diciembre 2014, 07:29
por eferion
Ordenar lista simplemente enlazada en lenguaje C. « 1 2 3 »
Programación C/C++
NOB2014 20 4,228 Último mensaje 12 Julio 2016, 19:28
por NOB2014
Borrar nodo en lista simplemente enlazada[C]
Programación C/C++
NOB2014 4 1,024 Último mensaje 28 Julio 2016, 14:22
por NOB2014
Problema al leer/mostrar lista simplemente enlazada en C
Programación C/C++
Chamit Jabes 1 284 Último mensaje 10 Abril 2017, 01:57
por Chamit Jabes
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines