Is this even possible ...I'd like to know witch class created what (to exchange the ID ) but this is creating loop, and I'm not sure if this even possible , and I have to use third class ...I'm still far from the expert level but the algorithm I'm working on will need to be able to do similar thing
is there a way to condition if (classDemoA == created) then include constructor classDemoB(classDemoA &objA) in classDemoB ?? ...is there a way to #ifDef ?? fo first class A wave not incluseproblematic constructor ?? but after is included ... where to find this info ??
Apologise if I'm asking stupid question but I'm despred for the answer to be able to move on :)
I will do it this way:
class Root { private: string Name; public: Root() { SetName("Root"); }; ~Root() { Name = NULL; }; string GetName() { return (Name); }; void SetName(string NewName) { Name = NewName; }; }; class classDemoA : public Root { public: classDemoA(void) { SetName("classDemoA"); }; classDemoA(Root &objB) { SetName(objB.GetName()); }; ~classDemoA(void) { }; }; class classDemoB : public Root { public: classDemoB(void) { SetName("classDemoB"); }; classDemoB(Root &objA) { SetName(objA.GetName()); }; ~classDemoB(void) { }; }; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { Print ("================================================================"); classDemoA *ObjA = new classDemoA(); classDemoB *ObjB = new classDemoB(); Print (ObjA.GetName(), ", ", ObjB.GetName()); delete ObjA; delete ObjB; ObjA = new classDemoA(); ObjB = new classDemoB(ObjA); Print (ObjA.GetName(), ", ", ObjB.GetName()); delete ObjA; delete ObjB; } //+------------------------------------------------------------------+
There will not be compilation warnings/errors, and the output will be:
2019.05.21 13:48:48.603 ClassTest (EURUSD,H1) ================================================================ 2019.05.21 13:48:48.603 ClassTest (EURUSD,H1) classDemoA, classDemoB 2019.05.21 13:48:48.603 ClassTest (EURUSD,H1) classDemoA, classDemoA
I will do it this way:
There will not be compilation warnings/errors, and the output will be:
Thank You very much for the reply, I was very much avoiding to create third class but looks like this is necesery ...Just to show You my latest try ...I did something like this as below but now I know that preprocessors directives are used only once from the top to the bottom and if the same class is created second time the directives are not changed even is they where directed to be changed (my current level of understanding this) ...this code compiles ok if only A class is initialised using (void) constructor, if later I use (classB) constructor, even is # define is defined this is not taken under consideration unfortunately ...code below
//+------------------------------------------------------------------+ class classDemoA { public: classDemoA(void){}; #ifdef classBcreated classDemoA(classDemoB &objB){}; #endif ~classDemoA(void){}; }; //+------------------------------------------------------------------+ class classDemoB { public: classDemoB(void){}; classDemoB(classDemoA &objA){}; ~classDemoB(void){}; }; #define classBcreated //.............................. >> >>>> >> >>>> >> int OnInit() { classDemoA classA(); classDemoB classB(); // classDemoA classAA(classB); // preprocessor directives have only single run ??? or I did something wrong ?? return(INIT_SUCCEEDED); }
It's hard to give advice because it is very unclear what you're hoping to accomplish, but what I can tell you is that you need to be using forward declarations.
class Manager; class Worker { Manager *m_manager; public: Worker(Manager *m):m_manager(m){} }; class Manager { Worker *m_worker; public: Manager() { m_worker = new Worker(&this); } ~Manager() { delete m_worker; } }; void OnStart(){ Manager m; }
It's hard to give advice because it is very unclear what you're hoping to accomplish, but what I can tell you is that you need to be using forward declarations.
It's hard to give advice because it is very unclear what you're hoping to accomplish, but what I can tell you is that you need to be using forward declarations.
Last question ...will this affect the performance if I create separate file and "forward declare" all my classes or I should just use it for "necessary scenarios" ??
Last question ...will this affect the performance if I create separate file and "forward declare" all my classes or I should just use it for "necessary scenarios" ??
No, forward declarations has no run-time performance impact.
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Is this even possible ...I'd like to know witch class created what (to exchange the ID ) but this is creating loop, and I'm not sure if this even possible , and I have to use third class ...I'm still far from the expert level but the algorithm I'm working on will need to be able to do similar thing
is there a way to condition if (classDemoA == created) then include constructor classDemoB(classDemoA &objA) in classDemoB ?? ...is there a way to #ifDef ?? fo first class A wave not incluseproblematic constructor ?? but after is included ... where to find this info ??
Apologise if I'm asking stupid question but I'm despred for the answer to be able to move on :)