mql5中的OOP、模板和宏,细微之处和用途 - 页 20

 
如何取消宏参数数量中8个元素的限制,我缺少8个元素?
 
Seric29:
如何取消宏参数数量中8个元素的限制,我缺少8个元素?

应该写一个宏中的宏。

为什么不直接写函数呢?

 

是否有办法用一个宏来移除/删除const修改器? 并在需要时禁用它?

ZS:有一个代码。

class COrder {
private:
//--- const to send order
   const int         c_cmd;
   const double      c_volume;
   double            c_price;
   const int         c_magic;
   const int         c_stoploss;
   const int         c_takeprofit;
}

决定在文件中写入一个类的字段,并通过构造函数从文件中恢复,但修改器const会干扰这一点。

代码几乎已经完成,理论上我可以删除所有的约束,但是......。但我不想失去进一步修改的机会,而const在修改代码时非常有帮助。

 
Igor Makanu:

是否可以使用一个宏来移除/删除const修改器? 并在需要时禁用它?

#define const
 
fxsaber:

嗯,这么简单?

我如何限制我想应用宏的源代码部分?

 
Igor Makanu:

我如何限制我想应用这个宏的源代码区域?

#undef const
 
Igor Makanu:

是否有办法用一个宏来移除/删除const修改器? 并在需要时禁用它?

ZS:有一个代码。

决定在文件中写入一个类的字段,并通过构造函数从文件中恢复,但修改器const会干扰这一点。

代码几乎已经完成,理论上我可以删除所有的约束,但是......。但我不想失去进一步修改的机会,而const在修改代码时非常有帮助。

有什么想法?所有地方的c_cmd都是常数,有一个函数不是常数?如果是这样,那就是UB(是的,μl不允许这样做),好在那里因为只读段,编译器优化......

 
fxsaber:

嗯,又很简单。

谢谢你!

胜利

有什么想法?c_cmd在任何地方都是常数,有一个函数不是常数吗?如果是这样,那就是UB(是的,μl不允许这样做),好在那里因为只读段,编译器优化......

我决定在下一个新订单(多订单TS)时,保存2个类的所有字段以及其中的所有设置和当前状态。


我已经决定使用一个单独的结构,按要保存的类的字段名划分字段--我只需在2分钟内在编辑器中复制该结构即可)),而且只需调用FileWriteStruct()就能方便地保存字段。)

而为了恢复状态,我将使用这个构造函数作为例子。

COrder::COrder(SRecovery &property)
:  c_cmd(property.c_cmd),
   c_volume(property.c_volume),
   c_price(property.c_price),
   c_magic(property.c_magic),
   c_stoploss(property.c_stoploss),
   c_takeprofit(property.c_takeprofit)
{

}

在这个构造函数调用中,常量字段可以被初始化

恢复数据只需要重新加载终端就可以了

我还没有做,但我99%确定它能顺利工作--我不想引入新的数据类型(存储结构)--但这将更容易,我可以在以后阅读代码....commentary不是我们写的--))))

 
Igor Makanu:

嗯,又很简单。

谢谢你!

我决定在下一个新订单(多订单TS)时,保存2个类的所有字段以及其中的所有设置和当前状态。


我已经决定使用一个单独的结构,按要保存的类的字段名划分字段--我只需在2分钟内在编辑器中复制该结构即可)),而且只需调用FileWriteStruct()就能方便地保存字段。)

而为了恢复状态,我将使用这个构造函数作为例子。

在这个构造函数调用中,常量字段可以被初始化

恢复数据只需要重新加载终端就可以了

我还没有做,但我99%确定它能顺利工作--我不想引入新的数据类型(存储结构)--但这将更容易,我可以在以后阅读代码....comments不是我们写的--))))

如果你不想创建一个临时结构进行写入,可以尝试一个一个地将字段写入文件,然后以同样的方式从构造函数中读取它们。它不一定更快,但代码肯定会看起来 "更丑"。
 
fxsaber:
错了。它需要一个对应的const_cast,但它没有。
原因: