Search code examples
structcompiler-errorsmql4

Structure have objects and cannot be copied


I'm trying to start with my first MQL4 expert advisor,

I've created a struct to handle my orders:

struct Order
  {
   int               pair;
   int               command;
   double            quantity;
   double            entry;
   double            stopLoss;
   double            profit;
   int               slippage;
   string            comment;
   int               magicNumber;
   datetime          expire;
  };

but it seems I can't do this:

  Order a;
  Order b=a;

the compiler hangs saying:

'=' - structure have objects and cannot be copied

How can I assign a struct?


Solution

  • As MQL4 documentation says:

    Structures that do not contain strings or objects of dynamic arrays are called simple structures; variables of such structures can be freely copied to each other, even if they are different structures. Variables of simple structures, as well as their array can be passed as parameters to functions imported from DLL.

    Order is not a simple struct because of string member. So you cannot copy it with = operator. Either remove string member or copy it member by member.