Struct 结构具有对象,因此无法复制
我试着从我的第一位MQL4专家顾问开始 我已经创建了一个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
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<代码>,当将这些项存储在数组中时。