esteban (Normal User)
Newbie
Messaggi: 6
Iscritto: 21/11/2010
|
Ho semplicemente una variabile del tipo void * elemento. Come si fa il delete ad un puntatore void * ?
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
delete elemento;
ma è meglio se posti il codice
|
|
esteban (Normal User)
Newbie
Messaggi: 6
Iscritto: 21/11/2010
|
Codice sorgente - presumibilmente C++ |
class Classe { private: void * elemento; // puntatore void } Classe::~Classe() { delete elemento; // che è un puntatore void }
|
Mi da il warning quando faccio delete elemento, dicendomi questo:
deleting ‘void*’ is undefined
|
|
()
Newbie
Messaggi:
Iscritto:
|
mmm...se hai creato un puntatore void, evidentemente vuoi assegnargli qualche altro tipo di altro dato, come una classe che hai definito tu, tramite conversione.
Se fai :
Codice sorgente - presumibilmente C/C++ |
void* puntatore = new void;
|
allora puoi usare delete, però non mi sembra molto sensato visto che void è un genere di dato non definito.
Se invece fai cosi :
Codice sorgente - presumibilmente C/C++ |
void *puntatore = (void*)istanza_della_tua_classe;
|
allora il delete lo devi richiamare sull'istanza della tua classe.
Ultima modifica effettuata da il 30/11/2010 alle 18:03 |
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
semplicemente in C++ non ha senso usare il tipo void * quando ci sono le classi template.
Codice sorgente - presumibilmente C/C++ |
template <typename T>
class Classe
{
private:
T *elemento;
};//IL PUNTO E VIRGOLA ALLA FINE!
template <typename T>
Classe<T>::~Classe<T>()
{
delete elemento;
}
|
Ultima modifica effettuata da lorenzo il 30/11/2010 alle 21:36 |
|
()
Newbie
Messaggi:
Iscritto:
|
Postato originariamente da lorenzo:
semplicemente in C++ non ha senso usare il tipo void * quando ci sono le classi template.
Codice sorgente - presumibilmente C/C++ |
template <typename T>
class Classe
{
private:
T *elemento;
};//IL PUNTO E VIRGOLA ALLA FINE!
template <typename T>
Classe<T>::~Classe<T>()
{
delete elemento;
}
|
|
beh..magari non gli servono le funzionalità del template |
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
non si tratta di funzionalità, se esiste uno strumento adatto per fare una cosa perché non usarlo?
In C gli oggetti generici venivano gestiti tramite puntatore a valori void, in C++ si usano i template.
Non dirmi che non usi la STL solo perché non ne hai bisogno al 100%, la usi perché è comoda e perché è il core del C++.
|
|
()
Newbie
Messaggi:
Iscritto:
|
nono, non sto dicendo questo.
mmmm..ti faccio un esempio pratico.
magari lui ha un membro static, e vuole che sia comune a tutte le istanze, non solo a quelle dello stesso tipo del template.
Oppure sta solo studiando le conversioni con void xD
comunque direi che si puo chiudere qui, stiamo andando
Ultima modifica effettuata da il 01/12/2010 alle 21:07 |
|
esteban (Normal User)
Newbie
Messaggi: 6
Iscritto: 21/11/2010
|
Scusatemi per la risposta tardiva, ma avevo dimenticato di impostare la notifica via email. I template li conosco bene, ma mi serve sapere esattamente e meglio i puntatori a void *, un pò come simiulare la classe base object di java. I motivi non sto a spiegarli perchè mi dilungherei troppo.
|
|