Oppure

Loading
05/01/11 11:28
carmelolg
#include <iostream>
#include "AlberoBR.h"
#include "Lista.h"
using namespace std;
typedef AlberoBR<string> Albero;
int main()
{
    Albero a;
    string str;
    str = "abc";
    a.ins(str);
    Lista<Albero> lista;
    lista.addInCoda(a);
    
    return 0;
}




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
aaa
05/01/11 12:29
lorenzo
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....
aaa
05/01/11 13:20
HeDo
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:
void addInCoda(Albero a) {
    nodo_t nodo;
    [...]
    return &nodo;
}


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:

nodo_t *nodo = new nodo_t;
aaa