Struct 结构具有对象,因此无法复制

Struct 结构具有对象,因此无法复制,struct,compiler-errors,mql4,Struct,Compiler Errors,Mql4,我试着从我的第一位MQL4专家顾问开始 我已经创建了一个struct来处理我的订单: struct Order { int pair; int command; double quantity; double entry; double stopLoss; double profit; int

我试着从我的第一位MQL4专家顾问开始

我已经创建了一个
struct
来处理我的订单:

struct Order
  {
   int               pair;
   int               command;
   double            quantity;
   double            entry;
   double            stopLoss;
   double            profit;
   int               slippage;
   string            comment;
   int               magicNumber;
   datetime          expire;
  };
但似乎我做不到:

  Order a;
  Order b=a;
编译器挂起,说:

'=' - structure have objects and cannot be copied
我如何分配
结构

如下所示:

不包含动态数组的字符串或对象的结构 被称为简单结构;这种结构的变量可以是 自由地相互复制,即使它们是不同的结构。 可以传递简单结构的变量及其数组 作为从DLL导入的函数的参数

Order
不是一个简单的结构,因为
string
成员。因此,您不能使用
=
运算符复制它。删除
字符串
成员或逐个成员复制它。


我推荐的答案

您可以将类与指针一起使用,而不是使用结构,因为结构中不能有指针,也不能使用字符串进行复制

示例如下:,

阅读本文以了解类与结构


使用字符数组的备选答案(但对其进行简单更改)

在结构(而不是字符串)中定义具有固定大小的
char
数组

可以使用
字符串(…)



来处理
字符串和
字符
数组


示例:

struct Order
  {
   int               pair;
   int               command;
   double            quantity;
   double            entry;
   double            stopLoss;
   double            profit;
   int               slippage;
   char              comment[10];
   int               magicNumber;
   datetime          expire;
  };

  Order  a;
  string str = "testing\n";

  StringToCharArray( str, a.comment, 0, StringLen( str ) );

  Order b = a;

  Comment( "Array " + CharArrayToString( b.comment ) );

因为您不能像C++那样重载操作符,所以建议创建一个函数“代码>赋值< /C>”,它将从一个结构复制数据到另一个结构,并且可以调用诸如“代码>赋值(b,a));代码>而不是
b=a
Nope,
=
可以在结构中没有
字符串或动态数组成员的情况下使用。此外,对象,简单结构不包含对象,只包含数字。尽管我试图在函数中构建结构,但这似乎是个问题,我似乎也无法返回在方法中创建的结构。同样的问题。当您从函数返回某个内容时,它将被复制。因此,返回复杂结构也不起作用。在这种情况下,您可以使用指针。如果我在调用函数中创建对象,并将其传递给在参数中被调用的对象,该怎么办?如果您直接为该参数指定一个新结构,它将不会被更改。但你可以改变它的成员,这将完成我想做的工作。只是一句警告,不确定它是MQL4还是C++,但是使用字符数组技巧,直到我意识到存储的符号在往返转换之后有字符流血,“代码> USDJPY < /C> VS <代码> UDJPyPurthy<代码>,当将这些项存储在数组中时。