Dear all,
I would like to store object instances into a CList object but I'm always getting an error telling me "parameter conversion not allowed"...
What I would like to do is to create a list called "virtualPositions". And into this list I want to store object instances of type "CVirtualPosition".
Now, when I'm trying to add such an object instance of CVirtualPosition to this list (using method "Add"), I'm getting the error "parameter conversion not allowed".
See extract of my code below:
Any idea upon what's going wrong here?
Thanks in advance!!
I think I solved it by myself... I need to make sure that my class "CVirtualPosition" inherits from CObject...
class CVirtualPosition : public CObject { private: datetime openTime; double openPrice; string comment; public: CVirtualPosition(datetime t, double p, string c) { openTime = t; openPrice = p; comment = c; }; ~CVirtualPosition(); datetime GetOpenTime() const {return(openTime); } double GetOpenPrice() const {return(openPrice); } string GetComment() const {return(comment); } };
I think I solved it by myself
Well done. And it's great that you posted your solution for others who may have a similar problem in the future.
I would also like to suggest that you instantiate your CList object as a statically allocated object so whenever its scope runs out it will automatically be deleted as well as all of the dynamically allocated memory of the objects that it holds. It's ease to forget to use delete which will cause memory leaks.
{ CList list; for(int i=0; i<10; i++) list.Add(new CObject()); } //list automatically deleted here (scope) //dynamic objects in list also deleted (FreeMode == true)Just out of curiosity, is your background in Java?
I would also like to suggest that you instantiate your CList object as a statically allocated object so whenever its scope runs out it will automatically be deleted as well as all of the dynamically allocated memory of the objects that it holds. It's ease to forget to use delete which will cause memory leaks.
Yes indeed, my background lies at Java... But in the past, I've been working with C/C++ too but that's already a long time ago.
Great tip about statically allocating the CList object. Indeed now for the time being, I did make use of the "delete" function in e.g. the OnDeinit() and after removing objects from this list...
Yes indeed, my background lies at Java... But in the past, I've been working with C/C++ too but that's already a long time ago.
Great tip about statically allocating the CList object. Indeed now for the time being, I did make use of the "delete" function in e.g. the OnDeinit() and after removing objects from this list...
Just remember that CList and (the more efficient) CArrayObj automatically destroy all dynamic objects held in their collection upon the call to the deconstructor <by default>. This is important to know because you will eventually run into and issue when you pass objects from one collection to another and forget to set the FreeMode to false... You end up with a collection with invalid pointers because one automatically deleted the objects the other was pointing to.
Just remember that CList and (the more efficient) CArrayObj automatically destroy all dynamic objects held in their collection upon the call to the deconstructor <by default>. This is important to know because you will eventually run into and issue when you pass objects from one collection to another and forget to set the FreeMode to false... You end up with a collection with invalid pointers because one automatically deleted the objects the other was pointing to.
![MQL5 - Language of trade strategies built-in the MetaTrader 5 client terminal](https://c.mql5.com/i/registerlandings/logo-2.png)
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Dear all,
I would like to store object instances into a CList object but I'm always getting an error telling me "parameter conversion not allowed"...
What I would like to do is to create a list called "virtualPositions". And into this list I want to store object instances of type "CVirtualPosition".
Now, when I'm trying to add such an object instance of CVirtualPosition to this list (using method "Add"), I'm getting the error "parameter conversion not allowed".
See extract of my code below:
Any idea upon what's going wrong here?
Thanks in advance!!