|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
|
c++ costruttori di copia
ciao sto usando le QT
ho una classe che eredita dalla classe QObject il suo costruttore di copia di default e' privato, come posso ridefinirne uno mio pubblico in modo che io possa copiare oggetti della mia classe? ciao. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2662
|
che io sappia.. non puoi
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
a quanto sappia si possono ridefinire i costruttori,addirituttra puoi fare + costruttuori,con o senza parametri e a seconda della chiamata dell'oggetto con o senza parametri il programma sa da solo qualche costrutture fare partire,i costrutturi poi devono essere tutti public e devono avere lo stesso nome della classe..
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
|
si queste dovrebbero essere le regole per una classe tua,
ma per una classe ereditata con costruttore di copia privato? beh potrei modificare la classe base, ma in questo caso l'ho montata in un cramfs volume, quindi in sola lettura all'interno di un pda e poi sinceramente non ho voglia di farlo perche' se e' private c'e' un motivo. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
fai una ereditarietà di tipo friend no?
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2662
|
ma se la funzione nella classe da ereditare è già private?
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
|
che vantaggi ho con friend?
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2662
|
ma poi... che cos'è una ereditarietà di tipo friend?
io conosco solo la public, protected e private ![]() |
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Jun 2003
Città: Napoli
Messaggi: 464
|
Quote:
ed è una funzione ke ha libero accesso hai membri privati d una classe.
__________________
THERMALATAKE XASER V DAMIER V6000A,ENERMAX EG475AX SFMA,P4 2.8@3.2,ZALMAN CNPS 7000A-CU,CORSAIR TWINX 2X512MB DDR PC3200@460MHz 2-3-2-5,ABIT IC7-MAX 3,HDD SEAGATE BARRACUDA 7200.7 2X80GB RAID0 E 1X120GB, SAPPHIRE ATI RADEON 9800XT 256MB, CREATIVE AUDIGY 2 ZS,CREATIVE INSPIRE T5400,CRT LG F900P |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2662
|
Quote:
sì è quello che so anch'io ma sopra lui ha scritto 'un'ereditarietà di tipo friend'... pensavo fosse un nuovo costrutto ![]() ![]() |
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Re: c++ costruttori di copia
Quote:
![]() Dichiarare un costruttore privato e' come un messaggio che chi programma la classe vuole dare a chi la usa ed il messaggio e' chiaro: "Questa classe non puo' essere copiata". Il perche' una classe non possa essere copiata non e' di interesse dell'utente della classe. La risposta alla tua domanda e' quindi: non puoi e anche se potessi non devi farlo. Quindi niente friend, che per altro e' un costrutto molto pericoloso e va usato solo se sai esattamente quello che stai facendo. E quando sai di sapere esattamente quello che stai facendo, ripensaci e domandati se non c'e' un modo di risolvere il tuo problema senza friend ![]() Se per qualche motivo hai bisogno di un oggetto con semantica di copia (un oggetto che vuoi copiare) che "usa" la classe QObject puoi sempre dichiarare la tua nuova classe e fare "containment": in parole povere crei una classe copiabile che contiene un'istanza alla classe QObject. Occhio che non e' una cosa semplice da gestire e se non hai assolutamente bisogno di questo comportamento ti consiglio di evitare quest'implementazione. In genere cerca di fare le cose piu' semplici possibili.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA Ultima modifica di fek : 22-08-2004 alle 08:57. |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: May 2002
Città: Massa Carrara
Messaggi: 589
|
"containment"
cosa vuol dire? e' una parola che non ho mai sentito. io per ora ho creato una f.membro che si chiama "copia(tipo oggetto)." naturalmente mi copia solo i dati della mia classe derivata e se aggiungo una variabile la devo inserire anche nella fnzione di copia. che e' quello che poi volevo io. non volevo copiare anche l'oggetto di derivazione. ne creo uno nuovo e copio i valori in esso da un'altro oggetto sorgente. comunque sono curioso sul containment. ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:59.