Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Question instanciation [ Divers / Général ] (statquant)

jeudi 26 juillet 2007 à 11:01:42 | Question instanciation

statquant

Hello
Je me pose une petite question.
La classe ci dessous possede une methode public inlinée( on s'en fout) et static qui s'appelle GetInstance()

1. Est ce que le fait de l'appeler va automatiquement instancier un objet de type List AssetTrading ???
2. Si ce n'est pas le cas est ce que lors de differents appels differents *ListAssetTrading vont être créés
3. Je trouve cette facon de faire bizarre, vous avez souvent vu des trucs similaires ?


class ListeAssetTrading
{
friend class Selection;
friend class SelectionMultiple;
friend class Selection1;
friend class Strategie1;
friend void GetIntervalleTradingDay(SAMDate & Date1, int duree, SAMDate & Date2);


private:
//args
map<string,AssetTrading*>         Assets;
static ListeAssetTrading *         Instance; //instance unique
set<AssetTrading*> AssetsPropres;
AssetTrading * Benchmark;
SAMDate EndFeries;
map<int,int> Feries;
map<SAMDate,int> FeriesDates;

private:
//constructor
ListeAssetTrading()
:Benchmark(NULL),LeGerant(NULL),isBenchmark(false),isWeighted(false),isResultsInTick(false),
isTradingTagMap(false),criticalValue(3.43),RefIndex(string("")),isCapNumberLegsSet(false),
mCapNumberLegs(-1),BetaCutOff(0.01),BetaCutOffRatio(0.01),
offset_beta(false)
{tradingTagMap.clear();Univers.clear();Feries.clear();DebouclagePotentielOnly=false;} //constructeur privé

public:
//public args
bool offset_beta;
bool isWeighted;
bool isResultsInTick;
double criticalValue;
bool DebouclagePotentielOnly;
bool isBenchmark;
vector<double> ValeurCritique;

//Parameters driving the maximum net number of legs in which a stock can be involved
bool isCapNumberLegsSet;
int mCapNumberLegs;
//The trading map is here to replace the full day convention by a day/time tag for example, it makes it easier to read logs
bool isTradingTagMap;

string RefIndex;
double BetaCutOff;
double BetaCutOffRatio;
set<string> Univers;//Liste des noms des stocks de l'univers de travail
GestionFonds * LeGerant;

map<pair<string,string>, double > net_beta;
map<pair<string,string>, string > against_index;
map<string,double> weights;
map<long, string> tradingTagMap;
map<pair<string,string>, pair<double,double> > regresseurs;
map<pair<string,string>, pair<double,double> > tailles;

public:
~ListeAssetTrading()
{
set<AssetTrading *>::iterator it = AssetsPropres.begin();
while(it != AssetsPropres.end()) { delete (*it); it++; }
Assets.clear();
}
//accesseurs

inline static ListeAssetTrading & GetInstance()
{
if(!Instance)
{
Instance = new ListeAssetTrading();
}
return *Instance;
}

AssetTrading& GetAsset(const string & s);
void AddAsset(AssetTrading *, bool IsBenchmark=false);
AssetTrading &GetBenchmark();

void SetBenchmark(AssetTrading * TheBench);
SAMDate GetDateRef(){return GetBenchmark().DateRef;}
SAMDate GetDateFin(){return GetBenchmark().DateFin;}
int GetFerie(SAMDate & When) {return Feries[NbDayBtw(GetDateRef(),When)];}
inline int GetFerie(int When){return Feries[When];}

//void Remove(const string & s);
string Describe();
string DescribeBetaDF();
string DescribePairesDF();
string Describe(SAMDate & When);
void CheckCoherence();
};

jeudi 26 juillet 2007 à 11:55:09 | Re : Question instanciation

juju12

Bon alors:
1- oui,un appel crée une instance s'il n'en existe pas déjà une.
2- non, puisqu'il y a création seulement s'il n'existe pas d'instance.
3- attention il n'y a pas de destruction automatique de l'instance créée donc risque de fuite mémoire. 

Au fait pas besoin de préciser inline quand le code est implémenté dans la définition, c'est automatique.




jeudi 26 juillet 2007 à 12:12:44 | Re : Question instanciation

wismerhill__

1. Super merci
3. Yep c'est bien ce que je pense
2. ok... donc en fait appeler getinstance() de partout dans un projet me permet de modifier (  via un getinstance().unefonctionqcq() )l'objet instancié lors du premier premier appel de getinstance() ?

jeudi 26 juillet 2007 à 13:33:30 | Re : Question instanciation

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

wismerhill__ -> Vi tu tape toujours sur ta première instance.

juju12 -> Implémentation dans la définition -> code inline ?

Tu peux le prouver stp ? Je vais regarder ça aussi de mon côté...



jeudi 26 juillet 2007 à 16:15:33 | Re : Question instanciation

wismerhill__

Ok... je connaissais pas ca merci beaucoup !!!

jeudi 26 juillet 2007 à 17:32:43 | Re : Question instanciation

juju12

rt15 -> bof, ca vient d'un bouquin. Voilà la référence :
"Le language C++", Christine Eberhardt, p.65

"Noter que nous avons remplacé les prototypes des fonctions dans la déclaration de la classe directement par leur définitions  [....] elles sont alors considérées inline."

De toutes manières j'aime pas mettre l'implémentation dans le header même si ca fait qu'une ligne.




Cette discussion est classé dans : string, false, bool, map, samdate


Répondre à ce message

Sujets en rapport avec ce message

JOYSTICK ? probleme lecture [ par pirate75000 ] Ma fonction est dans une dll!Pourquoiq quand je passe a l'etat 1 le bouton1 et le bouton2je recupere comme info qu'ils sont a zeroDesque je mets deux creer plusieur dialog identique [ par babylone2019 ] Bonjour pour expliquer mon probleme,J'ais donc creer une class dans laquel je fout toute mes fonciton relative au dialog.class userEditNetConDlg  {pub Problème avec une sous classe [ par Canacman ] Salut tout le mondeBon pour faire court, voici ma classe :class ArbreAVL{      public:             c Mélange bool / string [ par Roro8883 ] Bonjour à tous !J'ai un problème dans mon code, dans une classe.Voici les lignes posant problème :      int put_value (bool value, string file = "");  Serialiser une std::map (sans utiliser Boost) [ par tom24 ] Bonjour,voila pour un projet, je dois sérialiser en binaire des objets. Mes objets comprennent des string, mais aussi une map, et je ne sais pas vraim La class string [ par jderf ] Je suis débutant et je teste la class string. Voici un code tous simple, mais y'a un probleme de conversion à la compil que je ne comprend pas. Les er Empêcher surlignage avec TextOut [ par debutant VB ] En utilisant le code de julienbj sur la création d'une fenêtre (http://www.cppfrance.com/tutoriaux/BASE-CREATION-FENETRE-API-WINDOWS_345.aspx), j'ai u Problème création handle [ par nicolasmaicheul ] Bonjour,Cette simple ligne :string^ s = gcnew string("test");provoques ces ereurs à la compilation (visual c++ express) :error C3193: '^'*: requiert l filtrer un string avec une regular expression [ par olivierroyo ] Bonjour je souhaiterai filtrer un string et enlever les caracteres non autorisés.Pour cela ma regle de triage est definie par une expression du style petit pb de type string [ par bidules ] D'apres ce que g pu apprendre lorsque l'on veut declarer une variable de type string il faut faire :#include string variable;c bien ca? car qd je fais


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,640 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.