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(); } }

Rispondi quotando