MQL5中的OOP问题 - 页 74 1...676869707172737475767778798081...96 新评论 Igor Makanu 2020.06.09 20:38 #731 Vladimir Simakov:这里没有指针)有一个类的句柄,用它工作类似于用指针工作,但这是共同点的结束。 我好奇的心和调皮的手让我忙了两天两夜。 我试着把动态创建的对象移出范围--在函数中,摸索方法,但最后我得到了解决方案。 class CTest { public: ~CTest() { Print(__FUNCTION__); } }; //+------------------------------------------------------------------+ void OnStart() { CTest* _test = new CTest; deleteCTest(_test); } //+------------------------------------------------------------------+ void deleteCTest(CTest* &t) { delete t; } 删除它,但我不能像这样弄清楚....我还没有找到任何类似的函数签名来传递指针 这里有另一个问题。 我怎样才能通过引用返回一个对象的指针作为函数的结果? 我想做这样的事情。 CTest ret_CTest() { CTest *result = new CTest; return(result); } 可以毫无问题地 返回CTest *,但我写的 ret_CTest()--它给出了一个错误 Aleksey Mavrin 2020.06.09 20:44 #732 Igor Makanu:两天两夜,我好奇的心和淘气的手让我忙得不可开交。试着把动态创建的对象移出 范围--在函数中,直觉方法,但最终得到了解决。它是这样删除的,但我不能像这样搞清楚....我在帮助中没有找到任何类似的传递指针的函数签名。 你说它不在范围内是什么意思? 你把它传到一个函数里,所以它在那里是可见的) s.s.void deleteCTest(CTest* &t)没有那个&应该也能工作,对吗? 要真正在它被创建的范围之外删除它,而且可能是自动删除,你需要...嘘...在任何人听到之前...模式工厂......阅读速度更快,删除...... Vladimir Simakov 2020.06.09 20:59 #733 Igor Makanu: 但如何通过引用返回一个对象的指针作为一个函数的结果?你可以顺利地 返回CTest *,但是我写的 ret_CTest()--它给出了一个错误。 如果你想要犹太教CTest& Foo(); ,还没有,但如果要的话:CTest Foo(); 如果一个类有一个拷贝构造函数,那么它就应该有一个拷贝构造函数。CTest(CTest &other)... Igor Makanu 2020.06.09 21:01 #734 Aleksey Mavrin:s.w.void deleteCTest(CTest* &t) 没有这个&应该也能工作,还是不行? 看看吧,你会学到新东西的;) 我已经写过很多次,MQL指针是一个非常有指导意义的东西:))) 弗拉基米尔-西马科夫: ,如果你想要犹太教,还没有,但如果有。 如果你想使用一个指针,该类必须有一个拷贝构造函数。 再次,我需要思考 我怀疑GetPointer() 可能会做一些手脚...但它不是一个事实....这些 "穿越时空的跳跃"--通过MQL中的指针和隐含的解除引用--已经超出了我的想象!((( Vladimir Simakov 2020.06.09 21:05 #735 Igor Makanu:看看吧,你会学到很多;)我已经写过很多次,MQL中的指针是一个非常有指导意义的东西))))。 它删除了指针,但它不能给_test分配一个新的值。顺便说一下,MQL与此无关))) Vladimir Simakov 2020.06.09 21:06 #736 Igor Makanu:看看吧,你会学到很多;)我已经反复告诉你,MQL中的指针是非常有指导意义的))))。再次,我需要思考我怀疑GetPointer()可能会做一些手脚...但它不是一个事实....这些 "穿越时空的跳跃"--通过MQL中的指针和隐含的解除引用--已经超出了我的想象!((( 在这里可以))))只需关闭锐利度,这里甚至没有一丝一毫的锐利度))))。 Aleksey Mavrin 2020.06.09 21:13 #737 Igor Makanu:看看吧,你会学到很多;)我已经反复告诉你,MQL中的指针是非常有指导意义的))))。 我检查了一下。它的删除效果很好,没有&) 我在MT4和MT5中试了一下,比较一下 ) class CTest { public: CTest() { Print(__FUNCTION__); } ~CTest() { Print(__FUNCTION__); } }; //+------------------------------------------------------------------+ void OnStart() { CTest* _test = new CTest(); deleteCTest(_test); } //+------------------------------------------------------------------+ void deleteCTest(CTest* t) { delete t; } Igor Makanu 2020.06.09 21:20 #738 Aleksey Mavrin:检查得很好。它完美地删除了,没有&)我在MT4和MT5中试了一下,比较一下 ) 这不是一个完整的例子,我今天遇到了这个问题。 如果没有&,它将无法工作。 class CTest { public: ~CTest() { Print(__FUNCTION__); } }; //+------------------------------------------------------------------+ void OnStart() { CTest* _test = new CTest; deleteCTest(_test); delete _test; } //+------------------------------------------------------------------+ void deleteCTest(CTest* & t) { delete t; t = new CTest; } //+------------------------------------------------------------------+ Vladimir Simakov: 我在这里很好)))。我不是在找利器,但我相信没有&))也可以。 我不是在找夏普,我还在和MQL打交道,我可能会问我不懂的地方。 Vladimir Simakov 2020.06.09 21:33 #739 Igor Makanu:不是一个完整的例子,我今天遇到了它。不这样做是不行的 当然会的。你是通过值传递一个指针,因此将创建一个指针的副本。你将用它来钉住对象,并为函数中创建的指针创建一个新对象。这是c++,欢迎)))) Aleksey Mavrin 2020.06.09 21:43 #740 Igor Makanu:不是一个完整的例子,今天看到的是没有&是不行的 在我看来,这与引用无关,只是因为如果你想在函数运行后保存数值,函数参数 必须通过指针传递。 同样的情况会发生在文件或指标句柄上,它们不是引用。 这一直是C++中的标准,尽管我已经很久没有依稀记得了。 1...676869707172737475767778798081...96 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这里没有指针)有一个类的句柄,用它工作类似于用指针工作,但这是共同点的结束。
我好奇的心和调皮的手让我忙了两天两夜。
我试着把动态创建的对象移出范围--在函数中,摸索方法,但最后我得到了解决方案。
删除它,但我不能像这样弄清楚....我还没有找到任何类似的函数签名来传递指针
这里有另一个问题。
我怎样才能通过引用返回一个对象的指针作为函数的结果?
我想做这样的事情。
可以毫无问题地 返回CTest *,但我写的 ret_CTest()--它给出了一个错误
两天两夜,我好奇的心和淘气的手让我忙得不可开交。
试着把动态创建的对象移出 范围--在函数中,直觉方法,但最终得到了解决。
它是这样删除的,但我不能像这样搞清楚....我在帮助中没有找到任何类似的传递指针的函数签名。
你说它不在范围内是什么意思? 你把它传到一个函数里,所以它在那里是可见的)
s.s.void deleteCTest(CTest* &t)没有那个&应该也能工作,对吗?
要真正在它被创建的范围之外删除它,而且可能是自动删除,你需要...嘘...在任何人听到之前...模式工厂......阅读速度更快,删除......
Igor Makanu:
但如何通过引用返回一个对象的指针作为一个函数的结果?
你可以顺利地 返回CTest *,但是我写的 ret_CTest()--它给出了一个错误。如果一个类有一个拷贝构造函数,那么它就应该有一个拷贝构造函数。
s.w.void deleteCTest(CTest* &t) 没有这个&应该也能工作,还是不行?
看看吧,你会学到新东西的;)
我已经写过很多次,MQL指针是一个非常有指导意义的东西:)))
,如果你想要犹太教,还没有,但如果有。
如果你想使用一个指针,该类必须有一个拷贝构造函数。
再次,我需要思考
我怀疑GetPointer() 可能会做一些手脚...但它不是一个事实....这些 "穿越时空的跳跃"--通过MQL中的指针和隐含的解除引用--已经超出了我的想象!(((
看看吧,你会学到很多;)
我已经写过很多次,MQL中的指针是一个非常有指导意义的东西))))。
它删除了指针,但它不能给_test分配一个新的值。顺便说一下,MQL与此无关)))
看看吧,你会学到很多;)
我已经反复告诉你,MQL中的指针是非常有指导意义的))))。
再次,我需要思考
我怀疑GetPointer()可能会做一些手脚...但它不是一个事实....这些 "穿越时空的跳跃"--通过MQL中的指针和隐含的解除引用--已经超出了我的想象!(((
在这里可以))))只需关闭锐利度,这里甚至没有一丝一毫的锐利度))))。
看看吧,你会学到很多;)
我已经反复告诉你,MQL中的指针是非常有指导意义的))))。
我检查了一下。它的删除效果很好,没有&)
我在MT4和MT5中试了一下,比较一下 )
检查得很好。它完美地删除了,没有&)
我在MT4和MT5中试了一下,比较一下 )
这不是一个完整的例子,我今天遇到了这个问题。
如果没有&,它将无法工作。
我在这里很好)))。我不是在找利器,但我相信没有&))也可以。
我不是在找夏普,我还在和MQL打交道,我可能会问我不懂的地方。
不是一个完整的例子,我今天遇到了它。
不这样做是不行的
不是一个完整的例子,今天看到的是
没有&是不行的
在我看来,这与引用无关,只是因为如果你想在函数运行后保存数值,函数参数 必须通过指针传递。 同样的情况会发生在文件或指标句柄上,它们不是引用。
这一直是C++中的标准,尽管我已经很久没有依稀记得了。