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;
}
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;
}
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à!).
Attendo un qualche suggerimento.