Vorrei creare un oggetto CServer, e riferirmi sempre ad esso e ai suoi attributi. Tutto bene finché non ho separato il codice in classi, così accade che ogni volta che creo una istanza della classe CServer creo un oggetto nuovo, e pertanto ogni volta che voglio accedere ad un suo attributo non faccio altro che accedere ad un attributo di un oggetto diverso.
Ecco il mio tentativo:
codice:// Server.h #pragma once class CServer { public: CServer(void); ~CServer(void); int mServer_iValue; void SetValue(int&); }; // Server.cpp #include "StdAfx.h" #include "Server.h" CServer::CServer(void) { mServer_iValue = 0; } CServer::~CServer(void) { } void CServer::SetValue(int& a) { mServer_iValue = a; }codice://Client.h #pragma once #include "Server.h" class CClient { public: CClient(void); ~CClient(void); CServer mClient_server; int GetValue(void); }; //Client.cpp #include "StdAfx.h" #include "Client.h" CClient::CClient(void) { } CClient::~CClient(void) { } int CClient::GetValue(void) { return mClient_server.mServer_iValue; }Il valore ritornato è "0" e non "12". Il motivo mi dovrebbe essere chiaro, cioé i valori fanno riferimento a due oggetti diversi, anche se sono istanze della stessa classe. Purtroppo per la ma limitarta esperienza non so quale tecnica debbo uilizzare per riuscire ad accedere al valore mServer_iValue riferito sempre allo stesso oggetto. Utilizzado i puntatori ho ottenuto lo stesso risultato (evidentemente commettendo la stessa ingenuità!).codice://Main.cpp #include "stdafx.h" #include "Server.h" #include "Client.h" int _tmain(int argc, _TCHAR* argv[]) { int starting = 12; CServer server; CClient client; server.SetValue(starting); int returned = client.GetValue(); std::cout << "Returned value is: " << returned << std::endl; return 0; }
Attendo un qualche suggerimento.

Rispondi quotando