J'écris un système statistique. Il devrait faire une sortie avec des paramètres donnés. Par exemple:Adresses de variables
float getSunActivity() { ... }
int getEarthActivity() { ... }
StatisticSystem::track("sun_activity", boost::any(getSunActivity()));
StatisticSystem::track("earth_activity", boost::any(getEarthActivity()));
class StatisticSystem
{
typedef std::map<string, const boost::any*> stats;
stats mStatsData;
static void track(const string &name, const boost::any ¶m);
void update();
};
StaticSystem::track(const string &name, const boost::any ¶m)
{
mStatsData[name] = ¶m;
}
StaticSystem::update()
{
BOOST_FOREACH(stats::value_type &row, mStatsData)
{
string data = lexical_cast<string>(&row.second);
cout << data << "\n";
// Usage of 'data' value
}
}
Regardez, chaque mise à jour appelant j'ai besoin dans la nouvelle valeur de toutes les variables passées. J'ai donc décidé de transmettre leurs adresses dans la mémoire. Mais maintenant les données se composent de l'adresse. Comment puis-je en recevoir de la valeur? Est-ce possible, sinon, que pourriez-vous conseiller pour ce problème?
Le code stocke l'adresse d'une variable temporaire, qui ne vous mènera nulle part bien. – aschepler