Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con il costruttore di copia
Forum - C/C++ - Problema con il costruttore di copia

Avatar
carmelolg (Normal User)
Rookie


Messaggi: 23
Iscritto: 14/12/2010

Segnala al moderatore
Postato alle 12:28
Mercoledì, 05/01/2011
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include "AlberoBR.h"
  3. #include "Lista.h"
  4. using namespace std;
  5. typedef AlberoBR<string> Albero;
  6. int main()
  7. {
  8.     Albero a;
  9.     string str;
  10.     str = "abc";
  11.     a.ins(str);
  12.     Lista<Albero> lista;
  13.     lista.addInCoda(a);
  14.    
  15.     return 0;
  16. }



Questo è il codice. Allora Albero e Lista sono due classi che simulano un albero con rispettive funzioni, e una lista molto simile a quella del STL.

quando faccio il passo lista.addInCoda(a); risulta il seguente errore:
  

In copy constructor `AlberoBR<T>::AlberoBR(const AlberoBR<T>&) [with T = std::string]':

84 C:\Users\Carmelo\Desktop\Progetto\progetto.cpp
instantiated from here

18 C:\Users\Carmelo\Desktop\Progetto\AlberoBR.h
[Warning] taking address of temporary

Come risolvo? Non riesco a capire le motivazioni


Foglia nuovo sinonimo di sterilità!
PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 13:29
Mercoledì, 05/01/2011
purtroppo per te mi hanno rubato ieri la sfera di cristallo, quindi non posso aiutarti in questo modo.

Se postassi il codice delle due classi magari....


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 14:20
Mercoledì, 05/01/2011
Testo quotato

Postato originariamente da carmelolg:
84 C:\Users\Carmelo\Desktop\Progetto\progetto.cpp
instantiated from here

18 C:\Users\Carmelo\Desktop\Progetto\AlberoBR.h
[Warning] taking address of temporary

Come risolvo? Non riesco a capire le motivazioni



vedo e provvedo, il codice sarà tipo:
Codice sorgente - presumibilmente C/C++

  1. void addInCoda(Albero a) {
  2.     nodo_t nodo;
  3.     [...]
  4.     return &nodo;
  5. }



semplicemente non puoi restituire l'indirizzo di una variabile allocata sullo stack della funzione (variabile locale), ma devi istanziarlo nell'heap (memoria globale) utilizzando il costrutto new:

Codice sorgente - presumibilmente C/C++

  1. nodo_t *nodo = new nodo_t;



Ingegnere Informatico
https://ldlagency.it
PM