The Dark Side of Hardware Upgrade Forum

...bringing out the worst in you since 2003...
Oggi è lun ott 05, 2026 11:57 pm

Tutti gli orari sono UTC +1 ora


-->
-->

Apri un nuovo argomento Rispondi all’argomento  [ 9 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: [C++] problema che non so descrivere nel campo titolo del thread
MessaggioInviato: mar lug 12, 2011 6:33 pm 
Schiavo
Avatar utente
Iscritto il: gio lug 22, 2010 3:58 pm
Messaggi: 8404
Sono abbastanza sicuro che sarà una cazzata, ma ci sto perdendo il pomeriggio.

Allora, una funzione/metodo che prende parametri passati come const <tipo> & è comoda per risparmiare memoria (evita costruttori di copia) quando dobbiamo passare uno o più parametri che non saranno modificati dalla funzione.


Ok, sempre usati, sempre andato tutto bene, però ora:

la firma del metodo è

Codice:
void inserisciGruppo( const string &, const Account* &  );


l'invocazione è
Codice:
Account* Legami::crea_account_polimorfo(string line){

[....cose....]

this->inserisciGruppo(idgruppo,tmp);

}


idgruppo è una string creata dentro crea_account_polimorfo, tmp è un Account*, sempre creato in crea_account_polimorfo

errore:

Codice:
scheletro_logica.cpp:73:46: error: no matching function for call to ‘Legami::inserisciGruppo(std::string&, Account*&)’
scheletro_logica.cpp:26:6: note: candidate is: void Legami::inserisciGruppo(const std::string&, const Account*&)


in pratica: non ho la funzione che prende string& e Account*&, ho quella che prende const string& e const Account&.

:yuno: Perchè? Non dovrebbe funzionare?



Inb4 errore del cazzo.
_________________
Working Vibes - L'Informazione | Controllo delle masse | Citizen Berlusconi | Storia del periodo berlusconiano | La mafia in politica | L'Ombra Oscura Della P2 | Promemoria | Borsellino: Lezione sulla mafia | Videocracy | Draquila
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: [C++] problema che non so descrivere nel campo titolo del thread
MessaggioInviato: mar lug 12, 2011 11:32 pm 
Schiavo
Avatar utente
Iscritto il: gio apr 07, 2011 3:00 pm
Messaggi: 1367
Prime cose che mi viene in mente: chiami per caso metodi NON const della classe Account nella funzione inserisciGruppo (se ci usi dentro this, sono dichiarati non const al 100%)? Hai dichiarato la variabile che passi alla funzione come const Account*?

Nota che per passare un argomento per reference, senza quindi richiamare il copy-constructor, il const non è necessario. E c'è differenza tra una const reference ed una reference "normale", che mi sa che è la cosa che ti ha gabbato.


Secondariamente, che compilatore usi? Mi sa tanto di un GCC olderrimo...
_________________
In Soviet Italy, the evil army owns you!
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: [C++] problema che non so descrivere nel campo titolo del thread
MessaggioInviato: mer lug 13, 2011 8:48 am 
Schiavo
Avatar utente
Iscritto il: ven feb 03, 2006 10:50 pm
Messaggi: 5164
Località: Reggio Calabria --> London
scusa, ma se sei dentro la classe perche' usi this-> ?
_________________
:scongiuri:
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: [C++] problema che non so descrivere nel campo titolo del thread
MessaggioInviato: mer lug 13, 2011 1:17 pm 
Schiavo
Avatar utente
Iscritto il: gio lug 22, 2010 3:58 pm
Messaggi: 8404
MadJackal ? ha scritto:
Prime cose che mi viene in mente: chiami per caso metodi NON const della classe Account nella funzione inserisciGruppo (se ci usi dentro this, sono dichiarati non const al 100%)?


no, nella funzione inserisciGruppo vengono chiamati metodi non const, ma della classe Gruppo

MadJackal ? ha scritto:
Hai dichiarato la variabile che passi alla funzione come const Account*?


no, è dichiarata come Account* tmp; poi in uno switch c'è la new

MadJackal ? ha scritto:
Nota che per passare un argomento per reference, senza quindi richiamare il copy-constructor, il const non è necessario. E c'è differenza tra una const reference ed una reference "normale", che mi sa che è la cosa che ti ha gabbato.

vero, me la sono riguardata, il const serve per permettere di passare oggetti anonimi come reference, l'avevo lasciato per quello. L'ho tolto e funziona, grazie :wink: .
Però non capisco ancora perché prima non funzionasse, in quanto i 2 parametri passati erano due oggetti indirizzabili, non oggetti anonimi.




MadJackal ? ha scritto:
Secondariamente, che compilatore usi? Mi sa tanto di un GCC olderrimo...


come ide uso netbeans, il compilatore è il g++ standard della macchina
_________________
Working Vibes - L'Informazione | Controllo delle masse | Citizen Berlusconi | Storia del periodo berlusconiano | La mafia in politica | L'Ombra Oscura Della P2 | Promemoria | Borsellino: Lezione sulla mafia | Videocracy | Draquila
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: [C++] problema che non so descrivere nel campo titolo del thread
MessaggioInviato: mer lug 13, 2011 1:17 pm 
Schiavo
Avatar utente
Iscritto il: gio lug 22, 2010 3:58 pm
Messaggi: 8404
TigerShark ? ha scritto:
scusa, ma se sei dentro la classe perche' usi this-> ?



boh, è un vezzo che mi porto dalle superiori. L'ho tolto dai, ma alla fine non cambiava niente.
_________________
Working Vibes - L'Informazione | Controllo delle masse | Citizen Berlusconi | Storia del periodo berlusconiano | La mafia in politica | L'Ombra Oscura Della P2 | Promemoria | Borsellino: Lezione sulla mafia | Videocracy | Draquila
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: [C++] problema che non so descrivere nel campo titolo del thread
MessaggioInviato: mer lug 13, 2011 3:24 pm 
Schiavo
Avatar utente
Iscritto il: gio lug 22, 2010 3:58 pm
Messaggi: 8404
Ok ora c'è una roba che mi fa alquanto bestemmiare :wat:

Codice:
void Legami::inserisciGruppo( string& s, Account* &  member){
    vector<Gruppo*>::iterator it;
    it= gruppi->begin();
    [ ... cose commentate ... ]
    }


così dà segmentation fault :wat:

Codice:
void Legami::inserisciGruppo( string& s, Account* &  member){
    vector<Gruppo*>::iterator it;
    //it= gruppi->begin();
    [ ... cose commentate ... ]
    }


così no :wat:

gruppi è un vector<Gruppo*>*

al primo colpo è vuoto, quindi il begin dovrebbe restituirimi l'iteratore past-the-end


invece segmentation fault :wat:
_________________
Working Vibes - L'Informazione | Controllo delle masse | Citizen Berlusconi | Storia del periodo berlusconiano | La mafia in politica | L'Ombra Oscura Della P2 | Promemoria | Borsellino: Lezione sulla mafia | Videocracy | Draquila
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: [C++] problema che non so descrivere nel campo titolo del thread
MessaggioInviato: mer lug 13, 2011 3:25 pm 
Schiavo
Avatar utente
Iscritto il: gio lug 22, 2010 3:58 pm
Messaggi: 8404
che mona, non l'avevo inizializzato nel costruttore :asd:


fa bene scrivere le cose però :sisi:
_________________
Working Vibes - L'Informazione | Controllo delle masse | Citizen Berlusconi | Storia del periodo berlusconiano | La mafia in politica | L'Ombra Oscura Della P2 | Promemoria | Borsellino: Lezione sulla mafia | Videocracy | Draquila
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: [C++] problema che non so descrivere nel campo titolo del thread
MessaggioInviato: ven ago 19, 2011 4:32 pm 
Schiavo
Avatar utente
Iscritto il: gio lug 22, 2010 3:58 pm
Messaggi: 8404
ho scoperto qual'era il problema iniziale, che avevo per il momento lasciato stare passando i puntatori per copia


in pratica, per prendere un riferimento puntatore costante a Tipo, non bisogna scrivere (come "intuitivo") cost Tipo * &, perchè questo è un riferimento puntatore a Tipo costante, e quindi non può prendere un oggetto anonimo, ma solo un lvalue.

Bisogna invece scrivere Tipo* const & (riferimento puntatore costante a Tipo), così prende anche oggetti anonimi (rvalue senza lvalue) :sisi:

se si vuole prendere un riferimento puntatore costante a Tipo costante invece è const Tipo * const & :sisi:
_________________
Working Vibes - L'Informazione | Controllo delle masse | Citizen Berlusconi | Storia del periodo berlusconiano | La mafia in politica | L'Ombra Oscura Della P2 | Promemoria | Borsellino: Lezione sulla mafia | Videocracy | Draquila


Ultima modifica di toyo, ven ago 19, 2011 4:55 pm, modificato 1 volta.
Top
 Profilo Non connesso  
 
 Oggetto del messaggio: Re: [C++] problema che non so descrivere nel campo titolo del thread
MessaggioInviato: ven ago 19, 2011 4:46 pm 
Schiavo
Avatar utente
Iscritto il: mar lug 20, 2010 12:40 am
Messaggi: 17
Località: Kooly Noody
ahhhhhhhhh ora si che si ragiona :v
_________________
Immagine

Immagine

sider ? ha scritto:
Un giorno ho visto per strada un tizio barcollante , sporco, pieno di chiazze verdi e pus, infastidiva bambine e rubava i soldi alle vecchiette: era uno che postava nel DS.

Le auto straniere non sono nel mio core businnes (cit.)
:O
Forza Morte
Top
 Profilo E-mail Non connesso  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 9 messaggi ] 
-->

Tutti gli orari sono UTC +1 ora


Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Vai a:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzione Italiana phpBB.it