ciao.
Ho provato a semplificare il sistema , ho aperto un altro post che è un po confusionario , quindi pregerei il moderatore se ci sono problemi di chiudere l'altro post , non questo.
posto il codice:
[code]
#include "stdafx.h"
#include "A.h"
#include "B.h"
#include <string>
using namespace std;
main
A.hcodice:int _tmain(int argc, _TCHAR* argv[]) { CA *c =new CA(); c->processA(); CB* data = c->GetCB(); CC** cx = data->m_mappa[0]; CC* ce = * cx; wstring str = ce->GetName(); ce = * cx; str = ce->GetName(); return 0; }
A.cppcodice:#pragma once #include "B.h" class CA { public: CA(void); ~CA(void); void processA(); CB* GetCB(); private: CB *m_b; };
B.hcodice:#include "StdAfx.h" #include ".\a.h" CA::CA(void) { } CA::~CA(void) { } void CA::processA() { CC* c= new CC(); CC* cx= new CC(); c->SetName(L"giugio"); cx->SetName(L"pippo"); m_b = new CB(); m_b->processaB(&c); m_b->processaB(&cx); } CB* CA::GetCB() { return m_b; }
B.cppcodice:#pragma once #include "C.h" #include <map> using namespace std; class CB { public: CB(void); ~CB(void); void processaB(CC ** pPointer); map<int, CC**>m_mappa; };
C.hcodice:#include "StdAfx.h" #include ".\b.h" CB::CB(void) { } CB::~CB(void) { } void CB::processaB(CC** pC) { m_mappa[m_mappa.size()] = pC; }
C.cppcodice:#pragma once #include <string> using namespace std; class CC { public: CC(void); ~CC(void); void SetName(wstring str); wstring GetName(); private: wstring m_name; };
codice:#include "StdAfx.h" #include ".\c.h" CC::CC(void) { } CC::~CC(void) { } wstring CC::GetName() { return m_name; } void CC::SetName(wstring str) { m_name = str; }
dove sono gli errori?
perchè nel main CC* ce = * cx; ce ha un puntatore a schifo(0Xccccccc)?e non il valore che gli ho assegnato?
Grazie

Rispondi quotando