Vettore di puntatori

di il
2 risposte

Vettore di puntatori

Ciao ragazzi,

qualcuno mi sa dire come posso creare in C++ un vettore di puntatori ognuno dei quali punta ad un vettore (i vettori possono appartenere a tipologie differenti)

Grazie

2 Risposte

  • Re: Vettore di puntatori

    Si puo' fare:

    1) puoi usare void* come tipo del puntatore e poi fai un cast verso il tipo specifico.

    2) puoi usare come elementi del vettore una union dei diversi tipi di puntatori.

    3) puoi vedere che cosa mette a disposzione boost: ad esempio il tipo any potrebbe fare al caso tuo

    queste sono sono alcune possibili soluzioni. Se ne possono trovare di migliori, ma servirebbero maggiori informazioni
  • Re: Vettore di puntatori

    Grazie per la risposta. Ho dato un'occhiata alle tre soluzioni. Quello che vorrei fare è costruire una classe che chiamerò database nella quale ci voglio mettere dentro un vettore di puntatori i quali ognuno punta ad un vettore. Dentro la classe ci metto anche una funzione in grado di importare i dati da un csv dentro i vettori (i quali potranno essere di diverso tipo). Poi diverse funzioni che mi permetteranno di gestire il database un po' come si fa in SQL (ordinamenti,merge, group by ecc..). La classe che costruisco voglio quindi che sia generica ovvero che possa accogliere dati di diverso tipo.
    Non conosco bene il C++ e non so se questo può essere un modo buono di approcciare il problema.
    Se hai suggerimenti in merito sono ben accetti. Ho iniziato a scrivere questo seguendo il tuo consiglio.
    
           
             class database
    	{
    	 public:
    	 void *pvars[100];
    	};
    	
           database tab_reddito;
    	
           vector<string> persona(2);
           persona[0]="Mario Rossi";
           persona[1]="Luigi Bianchi";
    
           vector<int> reddito(2);
           reddito[0]=3000;
           reddito[1]=2500;
    
           tab_reddito.pvars[0]=&persona;
           tab_reddito.pvars[1]=&reddito;
    	
           vector<int> *pInt = static_cast<vector<int>*>(tab_reddito.pvars[1]); 
           cout << (*pInt)[1] << endl;  
    	
    
Devi accedere o registrarti per scrivere nel forum
2 risposte