Ciao a tutti, sto scrivendo un codice per creare una matrice dinamica... per far questo ho creato una classe template CArray che permette di allocare in un array dinamico un oggetto qualunque e una classe chiamata ArrayList che consente di allocare dinamicamente degli array di tipo char.
Ecco il codice:
#ifndef CARRAY_H
#define CARRAY_H
#include "../ArrayList.h"
template <typename T>
class CArray
{
private:
T *lista = nullptr;
int n_size = 0;
public:
CArray(){
lista = new T[0];
};
void add(T elemento){
n_size++;
T *temp = new T[n_size];
for (int i = 0; i < n_size-1; i++) temp[i] = lista[i];
temp[n_size-1] = elemento;
for (int i = 0; i < n_size; i++) lista[i] = temp[i];
}
T getElement(int i) {return lista[i];}
};
#endif // CARRAY_H
#ifndef ARRAYLIST_H_INCLUDED
#define ARRAYLIST_H_INCLUDED
#include <conio.h>
#include <iostream>
class ArrayList{
private:
char *elementi = nullptr;
int nsize;
int n_sizelista;
public:
ArrayList(){
elementi = new char[0];
nsize=0;
}
ArrayList copia(ArrayList origine){
ArrayList *elementi = new ArrayList[origine.getSize()];
for (int i = 0; i < origine.getSize(); i++) elementi->add(origine.getElement(i));
return *elementi;
}
convtoint(char c){ return c - 48;}
convtochar(int i){return i + 48;}
void add(char i){
nsize++;
char *temp = new char[nsize];
for (int j = 0; j < nsize-1; j++) temp[j] = elementi[j];
temp[nsize-1] = i;
elementi = new char[nsize];
for (int j = 0; j < nsize; j++) elementi[j] = temp[j];
delete[] temp;
}
getSize(){ return nsize;}
void mostra(){
for (int i = 0; i < nsize; i++) putchar(elementi[i]);
}
getElement(int pos){ return elementi[pos]; }
add_testa(char i){
nsize++;
char *temp = new char[nsize];
for (int j = nsize-1; j > 0; j--) temp[j] = elementi[j-1];
elementi = new char[nsize];
temp[0] = i;
for (int j = 0; j < nsize; j++) elementi[j] = temp[j];
delete[] temp;
}
elimina_ultimo(){
nsize--;
char *temp = new char[nsize];
for (int i = 0; i < nsize; i++) temp[i] = elementi[i];
elementi = new char[nsize];
for (int i = 0; i < nsize; i++) elementi[i] = temp[i];
delete[] temp;
}
};
#include "ArrayList.cpp"
#endif // ARRAYLIST_H_INCLUDED
Nel main()
int main(){
ArrayList *add1 = new ArrayList();
add1->add('0');
add1->add('1');
add1->add('2');
CArray<ArrayList> *el_addendi = new CArray<ArrayList>;
el_addendi->add(add1);
return 0;
}
Il compilatore però dà un errore in el_addendi->add(add1); NO MATCHING FUNCTION FOR CALL 'CArray<ArrayList>::add(ArrayList*&)'
Ho provato a modificarlo in questi due modi: el_addendi->add(<ArrayList>add1) oppure el_addendi-><ArrayList>add(add1), ma continua a non funzionare...
Sicuramente si tratta di una sciocchezza, ma non riesco a venirne fuori.... potete aiutarmi? Grazie
Non sono laureato in informatica, per cui vorrei che evitaste di commentare come ho scritto il codice... grazie