Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - template esperimenti
Forum - C/C++ - template esperimenti

Avatar
Thejuster (Member)
Guru^2


Messaggi: 1932
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 16:49
Mercoledì, 13/03/2019
Buonasera a tutti.

Sto sperimentando i template ma è un argomento al quanto vedo molto vasto
e complicato.

il mio primo esperimento era quello di simulare una lista come accade in .net
sò che può essere sbagliato come approccio.
anche perché esiste già la lista.
ma volevo provare ad imitarne il funzionamento.

ho fatto

Codice sorgente - presumibilmente C++

  1. template <class T>
  2. class List {
  3. T values [1000];
  4. private:
  5.     int count = 0;
  6.   public:
  7.  
  8.     void Add(T value)
  9.     {
  10.         values[count] = value;
  11.         count++;
  12.     }
  13.     int Count()
  14.     {
  15.         return count;
  16.     }
  17. };




per instanziarla ovviamente faccio

Codice sorgente - presumibilmente Plain Text

  1. List<int> lista;



Insiersco elementi tipo

Codice sorgente - presumibilmente Plain Text

  1. lista.Add(10);
  2. lista.Add(20);
  3. lista.Add(30);



facendo

Codice sorgente - presumibilmente Plain Text

  1. count << lista.Count();



Mi riporta ovviamente il numero di elementi inseriti nella lista.


ora mi domando, per recuperare i valori da quell'array?
come faccio?

cioè non sò come dichiarare un metodo che mi vada a recuperare i valori in [ID]

tipo dovrei farei

Codice sorgente - presumibilmente Plain Text

  1. cout << interi[1];



suggerimenti?




PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5792
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:48
Mercoledì, 13/03/2019
Devi fare l'overloading dell'operatore []

È una questione che non riguarda direttamente i template ma le classi c++


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1932
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 21:46
Mercoledì, 13/03/2019
si grazie nessuno,
infatti ho risolto con

Codice sorgente - presumibilmente C/C++

  1. T& operator []




PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1590
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 0:24
Giovedì, 14/03/2019
Io invece muovo una critica: list non è un buon nome per quella classe. Il subscript oprator in c++ di mette a disposizione per accedere in tempo costante agli elementi, e il nome lista da tutta un'altra idea di ciò che la classe gestisce. Trovo la tua classe molto più simile ad un std::array che ad un std::list, std::array richiede due parametri: tipo e dimensione, nel tuo caso la dimensione è fissa, ma ti consiglio di renderla templetizzata

PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1932
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 12:43
Giovedì, 14/03/2019
grazie juster, le critiche le accetto volentieri anche perché
mi permettono di vedere i miei errori.

grazie a tutti per il supporto


PM Quote