|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
|
c++
ciao.
sto usando le qt della trolltech ma il problema e' relativo al c++. io ho una classe lista. ed ho una classe listitem. voglio modificare la classe listitem ed aggiugerci qualche dato. allora derivo la mia nuova classe dalla classe base listitem Mylistitem ora creo la mia lista. poi creo un mio elemento e lo linko alla lista. poi creo un sotto elemento e lo linko al primo elemento. lista *ll=new lista(); Mylistitem *elem1=new Mylistitem(ll); Mylistitem *elem2=new Mylistitem(elem1); tutto bene fino alla 2°linea. la terza mi da un errore di compilazione che e': type Mylistitem is not a base type for type listitem. tnks in advance |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
Il problema è nel parametro che passi al costruttore; alla 2^ linea gli passi un oggetto lista, alla 3^ un oggetto Mylistitem.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
|
errore su errore.
non era quello il messaggio di errore ma: no matching function for to call Mylistitem::Mylistitem(listitem*&) candidates are: Mylistitem:Mylistitem(lista * = 0) Mylistitem:Mylistitem(const Mylistitem &) nella documentazione della trolltech,listitem puo' essere costruito con listitem(list) listitem(listitem) |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
|
nel secondo caso listitem e' figlio di un'altro listitem e cio' e del tutto regolare.
il problema e' che io non uno una classe nativa ma una derivata. come posso raggirare il problema? |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2004
Messaggi: 1578
|
Re: c++
Il secondo overload richiede una reference, mentre tu gli passi un puntatore
Prova così, dovrebbe andare: Codice:
lista *ll=new lista(); Mylistitem elem1(ll); Mylistitem *elem2=new Mylistitem(elem1); |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
|
scusa ma qual'e' la differenza tra un reference e un puntatore?
(mancanza di studio del c++)--->sono accettati anche link. sembra compilare ora guardo la funzionalita'. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jul 2004
Messaggi: 1578
|
Link non ne ho
Comunque il c++ oltre al passaggio di valori e puntatori offre la possibiltà del passaggio per riferimento vero e proprio. Svolge il passaggio che si potrebbe fare anche passando un puntatore in modo indiretto ma senza bisogno di specificarlo. |
|
|
|
|
|
#8 |
|
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
propongo una soluzione più elegante:
Codice:
lista *ll=new lista(); Mylistitem *elem1 = new Mylistitem(ll); Mylistitem *elem2 = new Mylistitem(*elem1); |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
|
ho letto qualcosa sui reference....
x 71103 -----si solita cosa che dicevo anch'io........ ho provato 100 volte e non mi compilava evidentemente ero in coma. ora compila, ma l'elemento non appare. come sottoelemento di elem1 Ultima modifica di x110 : 11-10-2004 alle 16:25. |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Jul 2004
Messaggi: 1578
|
Quote:
Magari è proprio quello il problema. Ciao |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
|
considera che se invece di usare
lista *ll=new lista(); Mylistitem *elem1 = new Mylistitem(ll); Mylistitem *elem2 = new Mylistitem(*elem1); uso lista *ll=new lista(); listitem *elem1 = new listitem(ll); listitem *elem2 = new listitem(elem1);(<-----attenzione:elem1 e non *elem1 ----------------------------------------anche la documentazione dice un puntatore a e non un oggetto puntato.) tutto funziona bene. il problema e' giusto il fatto che il mio oggetto e' un derivato di listitem. ciao. Ultima modifica di x110 : 11-10-2004 alle 19:00. |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
|
ok trovato.
nell'ereditare la classe listviewitem, avevo lasciato un solo costruttore con la listview. ora va molto bene. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:16.



















