Buonasera, ho un problema con questo programma che � composto da:
1. Una classe base Manoscritto;
2. Una classe derivata Lettera;
3. Un contenitore realizzato come vettore allocato staticamente.
Il mio problema nasce in quest'ultimo e in particolare nella funzione chiamata "inserimento", quando cerco di inserire dal main un qualsiasi oggetto Lettera mi da il seguente errore:
[Error] no matching function for call to 'miospazio::Vettore::inserimento(miospazio::Letter a&)'
inoltre mi da due note, cliccando sulla prima mi rimanda alla funzione inserimento presente del file.h del vettore, mentre la seconda mi dice:
[Note] no known conversion for argument 1 from 'miospazio::Lettera' to 'miospazio::Manoscritto* const&'
Io per ora posto solo il main e i file relativi al contenitore, perch� le classi Manoscritto e Lettera le ho testate con esiti positivi (infatti noterete dei test fra /* */ all'interno del main). Se per� pensate siano necessari pure le altre due classi le posto senza problemi, l'importante � che capisco dove � che sbaglio.
codice:
MAIN
#include <iostream>
#include "Vettore.h"
#include "Lettera.h"
using namespace std;
using namespace miospazio;
int main ()
{
/*
Lettera l;
Lettera l1 (1,"io",3,"DOC","io","tu");
Lettera l2=l1;
//cin >> l;
cout << l;
cout << l1;
cout << "\n________________________________\n";
cout << l2;
cout << "\n_________Lettura da file_________\n";
Lettera l3;
ifstream filein;
filein.open("input.txt");
l3.visualizza_dati(filein);
cout << l3;
cout << "\n________Stampa su file___________\n";
ofstream fileout;
fileout.open("output.txt");
l1.memorizza_dati(fileout);
*/
Vettore v;
Lettera l1 (1,"io",11,"Libro","io","tu");
Lettera l2 (2,"tu",22,"Libro","tu","egli");
Lettera l3 (3,"egli",33,"Libro","egli","noi");
Lettera l4 (4,"noi",44,"Libro","noi","voi");
Lettera l5 (5,"voi",55,"Libro","voi","loro");
v.inserimento(l1);
}
Vettore.h
#ifndef VETTORE_H
#define VETTORE_H
#include "Lettera.h"
using namespace std;
namespace miospazio
{
typedef Manoscritto* T;
class Vettore
{
private:
static const int MAX = 10;
T vet[MAX];
int riempimento;
public:
Vettore () {riempimento = 0;}
Vettore (const int dim) {riempimento = dim;}
bool empty () const {return riempimento==0;}
bool full () const {return riempimento==MAX;}
void bubblesort ();
bool ricerca (const T&);
bool push (const T&);
void inserimento (const T&);
void eliminazione (const int);
};
}
#endif
Vettore.cpp
#include "Vettore.h"
namespace miospazio
{
void Vettore::bubblesort ()
{
for (int i=1; i<riempimento; i++)
{
for (int j=0; j<riempimento-i; j++)
{
if (vet[j]->get_codice() > vet[j+1]->get_codice())
{
T temp;
temp = vet[j];
vet[j] = vet[j+1];
vet[j+1] = temp;
}
}
}
}
bool Vettore::ricerca (const T& a)
{
bool trovato = false;
int i = 0;
while (i<riempimento && trovato == false)
{
if (a->get_codice()==vet[i]->get_codice())
{
trovato = true;
}
else i++;
}
return trovato;
}
bool Vettore::push (const T& a)
{
if (full()) return false;
else
{
vet[riempimento] = a;
riempimento++;
return true;
}
}
void Vettore::inserimento (const T& a)
{
if (ricerca(a)==false)
{
push (a);
bubblesort();
}
else cout << "Errore codice gi� presente nell'elenco";
}
void Vettore::eliminazione (const int C)
{
if (C!=riempimento)
{
vet[C] = vet[riempimento-1];
riempimento--;
}
bubblesort();
}
}