你好,Artyom,你为指针分配动态内存 来执行下面的工作有什么特殊原因吗?
int CTrading::GetIndexPendingRequestByOrder(const ulong ticket) { CPendingReq *req=new CPendingReq(); if(req==NULL) return WRONG_VALUE; req.SetOrder(ticket); this.m_list_request.Sort(SORT_BY_PEND_REQ_TICKET); int index=this.m_list_request.Search(req); delete req; return index; }
依我之见,我认为使用一个普通的局部变量 会使方法更简单,并且可以去掉上面多余的指针处理代码。
int CTrading::GetIndexPendingRequestByOrder(const ulong ticket) { CPendingReq req; req.SetOrder(ticket); this.m_list_request.Sort(SORT_BY_PEND_REQ_TICKET); int index=this.m_list_request.Search(req); return index; }
我很想知道你选择前一种方法的理由......也许我错过了一些最佳实践?
/dima
ddiall :
你好,Artyom,为指针分配动态内存 来执行下面的工作有什么特殊原因吗?
依我之见,我认为使用一个普通的局部变量 会使方法更简单,并且可以去掉上面多余的指针处理代码。
我很想知道你选择前一种方法的理由......也许我遗漏了某些最佳实践?
/dima
Search() 方法 使用对象指针:
int Search( CObject* element // 样本 ) const
没错......但难道不能在调用该方法时传递局部变量的指针吗?
int index=this.m_list_request.Search(GetPointer(req));
ddiall :
啊,对了......但难道不能调用方法并传递局部变量的指针吗?
你可以用不同的方法...我已经这样做了......:)
Artyom Trishkin:
酷,谢谢 - 我只是想确认一下我的理解,因为我还在阅读文章和研究代码;-)
你可以用不同的方法...我已经这样做了......:)
ddiall:
酷,谢谢 - 我只是想确认一下我的理解,因为我还在阅读文章和研究代码;-)
好的。不客气 :)
酷,谢谢 - 我只是想确认一下我的理解,因为我还在阅读文章和研究代码;-)
CEventsCollection*GetObject(void) { return &this;
新文章 轻松快捷开发 MetaTrader 程序的函数库(第 二十八部分):延后交易请求之平仓、删除和修改已发布:
这是有关延后请求概念的第三篇文章。 我们将创建平仓、删除挂单、修改持仓和挂单参数等方法来完成延后交易请求的测试。
这是有关于延后请求概念的第三篇文章。 在本文中,我们将创建平仓、删除订单、以及修改持仓的止价订单/挂单参数等方法来完成概念测试。
此外,我们还略微改进了抽象订单类,添加了两个订单和仓位属性的返回值 — 订单填充和到期类型。 基准跨平台交易对象的所有交易方法的代码都已略微优化。 没必要在此讨论这些修改。 反之,我将展示修改的方法之一作为单独示例。作者:Artyom Trishkin