|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jun 2002
Città: Roma
Messaggi: 795
|
Errore che non capisco. C++
Ciao a tutti.. avrei un problemino
CList* NomeClasse::getList() const{ return &lista; } lista è un oggetto privato di NomeClasse di tipo CList (non un puntatore) se il metodo non è const me lo fa fare in questo caso mi dice return value type does not match the function type io voglio che la get sia const per non permettere che questo oggetto sia modificato, inoltre sono obbligato al passaggio per riferimento. how can i do? ciao e grazie in anticipo!
__________________
PC: Pentium dual core E5200 su ASUS P5K SEe/EPU, 2GB ram, Nvidia GeForce 9600 GSO, Hdd Western Digital 500Gb, ..... |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Se usi un metodo cost per accedere alla classe, tutti i suoi oggetti sono anch'essi const. Pertanto puoi solo ritornare un const CList *.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 Ultima modifica di ilsensine : 20-12-2006 alle 17:32. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jun 2002
Città: Roma
Messaggi: 795
|
lo credevo anche io ma
se il metodo invece di essere CList* NomeClasse::getList() const{ return &lista; } è CList NomeClasse::getList() const{ return lista; } dove lista è sempre un oggetto privato di NomeClasse di tipo CList (non un puntatore) ALLORA FUNZIONA e se invece lista è un oggetto privato di NomeClasse di tipo CList* e il metodo è CList* NomeClasse::getList() const{ return lista; } allora funziona di nuovo in pratica la cosa che non concepisce, credo, è di vedersi la & messa davanti a lista, come se volessi modificare l'oggetto (che in realtà non viene modificato ma estrapolo solo l'indirizzo) ![]()
__________________
PC: Pentium dual core E5200 su ASUS P5K SEe/EPU, 2GB ram, Nvidia GeForce 9600 GSO, Hdd Western Digital 500Gb, ..... |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Nota che il problema di fondo è il seguente: se devi eseguire operazioni non-const sulla lista dell'oggetto, la getList non può essere const. Se invece devi eseguire operazioni const, non dovresti avere nessun problema a ritornare un const CList *.
Nota infine che puoi dichiarare due getList: Codice:
const CList* NomeClasse::getList() const { return &lista; } CList* NomeClasse::getList() { return &lista; }
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:24.