CIao.
Ho questo problema:
Instanzio una classe col new e la metto in uno stack cosi:
[code]
CIfcProject m_root = new CIFcProject();
CObserverIfc* pElement = (CObserverIfc*)new CIfcOwnerHistory(strId, strRef);
m_Subject->StackIfc.push(pElement);
[code]
poi assegno in una funzione il puntatore a pElement ad un altro puntatore che all inizio è null
cosi:
fino qui tutto è corretto , ma se vado nel distruttore della classe base e prima di fare qualsiasi cosa provo a fare:codice:class CIfcProject { . public: . private: CObserverIfc* m_pObserverIfc; . void setPointer(CObserverifc* pData) { m_pObserverIfc = pData;//in questo modo vorrei copiare l'indirizzo di pData in //ObserverIfc } CObserverIfc* getData() { return m_pObserverIfc; } }
mi ritorna un valore NULL e non lo era!!!!.codice:CObserverIfc pObs = m_root->getData();
E' una cosa che non sono riuscito a capire a fondo ,se tolgo da qualsiasi mappa o array o contenitore in genere che lo contiene quanto resiste un puntatore dopo essere instanziato ?
Ha la visibilità della funzione?
è questo lo heap o zona di memoria in cui vengono messi i punttori ad oggetto?
scusate se sono domande banali , ma voglio colmare alla svelta questa lacuna che mi porto dietro da tanto , forse per aver fatto tutto per esperienza e mai letto un buon libro sul c++
(adesso sto leggendo thinking c++ se volete consigliarmi un capitolo di qualche libro...)
chiedo ...
ciao.