Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Mike_EDD

#1
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.