错误、漏洞、问题 - 页 2362 1...235523562357235823592360236123622363236423652366236723682369...3184 新评论 Igor Makanu 2018.12.27 20:27 #23611 Ilya Malev:我没有函数,但这正是你所描述的任务。 我有一个CNode(它有Prev(), Next()等方法)作为列表的基类,循环调用COrder的字段,它是它的子类。循环调用COrder的字段,它是它的后代。循环在定义中被声明了1次,然后被到处使用。我试图遵循你的例子,但我想使用typedef #property strict #include <Object.mqh> #include <Arrays\List.mqh> //+------------------------------------------------------------------+ class CMyclass:public CObject { public: int x; double y; void CMyclass(void):x(-1),y(-2.2) { } }; typedef CMyclass (*PtrCMyclass)(CObject*); PtrCMyclass Myclass; //+------------------------------------------------------------------+ void OnStart() { CList *base=new CList; for(int i=0;i<3;i++) { base.Add(new CMyclass); Myclass(base.GetCurrentNode()).x = 99; Myclass(base.GetCurrentNode()).y = -555.5; } for(int i=0;i<3;i++) { Print(Myclass(base.GetNodeAtIndex(i)).x," : ",Myclass(base.GetNodeAtIndex(i)).y); } delete base; } //+------------------------------------------------------------------+ 现在编译器跳过了我的例子,但我需要......需要一些东西......但什么? 我在执行时得到一个错误。 在'tst_file.mq4'中调用无效的函数指针(30,7)。 Ilya Malev 2018.12.27 20:30 #23612 Igor Makanu:你可能是对的,我试过你的例子,但我想使用typedef 现在,编译器跳过了我的例子,但我需要......我需要一些东西......但什么? 在'tst_file.mq4'中调用无效的函数指针(30,7)。 所以,我需要写一个函数并将其分配给指针)) typedef CMyclass* (*PtrCMyclass)(CObject*); CMyclass* FMyCast1(CObject*p){ CMyclass *r = dynamic_cast<CMyclass*>(p); if(CheckPointer( r ) != POINTER_INVALID) return r; else return NULL; } PtrCMyclass Myclass = FMyCast1; Igor Makanu 2018.12.27 20:35 #23613 Ilya Malev:所以,你需要写一个函数,并将其分配给一个指针))嗯,这是有道理的,但这样一来,如果我以下面的方式写函数,就没有给我一个解决类字段的点了 PtrCMyclass Myclass(CObject* obj){ return(GetPointer(obj)); }; 'x' - 结构或类的类型预期 tst_file.mq4 30 38 Ilya Malev 2018.12.27 20:36 #23614 试着像我上面写的那样。尽管这里并不真正需要typedef,因为它是代码和函数调用 之间的一个不必要的 "填充"。你仍然不能为另一个使用同一指针的类重载这个调用。你将不得不为每个班级制作一个新的。是时候让你意识到类型化定义是完全无用的了,我认为:) TheXpert 2018.12.27 20:59 #23615 Igor Makanu:((CMyclass*)base.GetNodeAtIndex(i)).x Igor Makanu 2018.12.27 21:10 #23616 Ilya Malev: 试着像我上面写的那样。虽然这里不需要typedef,因为它是代码和函数调用 之间的一个额外 "间隔"。你仍然不能为另一个使用相同指针的类重载这个调用。你将不得不为每个班级制作一个新的。是时候让你意识到类型化定义是完全无用的了,我认为:)我试过了,但我仍然不知道如何使用defans,科学是复杂的,我得到了错误: tst_file EURUSD,H1: 在'tst_file.mq4'无效的指针访问(31,56) #property strict #include <Object.mqh> #include <Arrays\List.mqh> //+------------------------------------------------------------------+ class CMyclass:public CObject { public: int x; double y; void CMyclass(void):x(-1),y(-2.2) { } }; //+------------------------------------------------------------------+ #define alive(node) (CheckPointer(node)==POINTER_DYNAMIC) #define loopf(type, node) for(type *o; o=node;) //+------------------------------------------------------------------+ void OnStart() { CList *base=new CList; CMyclass *res; for(int i=0;i<3;i++) { base.Add(new CMyclass); loopf(CMyclass,base.GetCurrentNode()){ o.x = 99; res.y = 555;} } for(int i=0;i<3;i++) { res=base.GetNodeAtIndex(i); Print(res.x," : ",res.y); } delete base; } //+------------------------------------------------------------------+ Igor Makanu 2018.12.27 21:16 #23617 TheXpert:((CMyclass*)base.GetNodeAtIndex(i)).x欢呼吧!它成功了!!!。 谢谢你! #property strict #include <Object.mqh> #include <Arrays\List.mqh> //+------------------------------------------------------------------+ class CMyclass:public CObject { public: int x; double y; void CMyclass(void):x(-1),y(-2.2) { } }; //+------------------------------------------------------------------+ void OnStart() { CList *base=new CList; for(int i=0;i<3;i++) { base.Add(new CMyclass); ((CMyclass*)base.GetCurrentNode()).x = 99; ((CMyclass*)base.GetCurrentNode()).y = 555; } for(int i=0;i<3;i++) { Print(((CMyclass*)base.GetNodeAtIndex(i)).x," : ",((CMyclass*)base.GetNodeAtIndex(i)).y); } delete base; } //+------------------------------------------------------------------+ ;) Ilya Malev 2018.12.27 21:53 #23618 Igor Makanu:我试过了,但我仍然不知道如何使用defans,科学是复杂的,我得到了错误: tst_file EURUSD,H1: 在'tst_file.mq4'无效的指针访问(31,56) 如果我的循环能与你的库节点一起工作,我会感到非常惊讶)) 当然,我指的是我上一篇文章中的typedef代码)) 伊戈尔-马卡努。欢呼吧!它成功了!!!。 谢谢! ;) 真的,你为什么不马上试试最明显的那个?:)你这么想和类型化的人一起摇滚?=))) Igor Makanu 2018.12.27 22:10 #23619 Ilya Malev:真的,你为什么不先试一下最明显的那个?:)你这么想用typedef来摇滚?=)))我试过了!我确信我 不能用MQL来解除指针的定义,但事实证明这是微不足道的--我应该多加一些括号的!"。)))) HH:typedef是一个话题,我试过了,但也不太顺利,我还需要弄清楚我在哪里搞砸了,我的例子应该也可以用typedef来做!"。 Ilya Malev 2018.12.27 23:07 #23620 Alexandr Sokolov:为什么该指标可能只在M1图表上不工作,而在所有其他图表上却能正常工作,这是什么原因?(MQL5)。这是函数--当我在M1图表上给它0时,它不知何故没有将一个变量加起来 这意味着有一个开盘=收盘的蜡烛图,而代码写得不正确,没有包含除以0的检查,这个不幸的事实并不取决于TF。 1...235523562357235823592360236123622363236423652366236723682369...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我没有函数,但这正是你所描述的任务。 我有一个CNode(它有Prev(), Next()等方法)作为列表的基类,循环调用COrder的字段,它是它的子类。循环调用COrder的字段,它是它的后代。循环在定义中被声明了1次,然后被到处使用。
我试图遵循你的例子,但我想使用typedef
现在编译器跳过了我的例子,但我需要......需要一些东西......但什么? 我在执行时得到一个错误。
在'tst_file.mq4'中调用无效的函数指针(30,7)。
你可能是对的,我试过你的例子,但我想使用typedef
现在,编译器跳过了我的例子,但我需要......我需要一些东西......但什么?
在'tst_file.mq4'中调用无效的函数指针(30,7)。
所以,我需要写一个函数并将其分配给指针))
所以,你需要写一个函数,并将其分配给一个指针))
嗯,这是有道理的,但这样一来,如果我以下面的方式写函数,就没有给我一个解决类字段的点了
PtrCMyclass Myclass(CObject* obj){ return(GetPointer(obj)); };
'x' - 结构或类的类型预期 tst_file.mq4 30 38
((CMyclass*)base.GetNodeAtIndex(i)).x
试着像我上面写的那样。虽然这里不需要typedef,因为它是代码和函数调用 之间的一个额外 "间隔"。你仍然不能为另一个使用相同指针的类重载这个调用。你将不得不为每个班级制作一个新的。是时候让你意识到类型化定义是完全无用的了,我认为:)
我试过了,但我仍然不知道如何使用defans,科学是复杂的,我得到了错误: tst_file EURUSD,H1: 在'tst_file.mq4'无效的指针访问(31,56)
((CMyclass*)base.GetNodeAtIndex(i)).x
欢呼吧!它成功了!!!。
谢谢你!
;)
我试过了,但我仍然不知道如何使用defans,科学是复杂的,我得到了错误: tst_file EURUSD,H1: 在'tst_file.mq4'无效的指针访问(31,56)
如果我的循环能与你的库节点一起工作,我会感到非常惊讶))
当然,我指的是我上一篇文章中的typedef代码))
欢呼吧!它成功了!!!。
谢谢!
;)
真的,你为什么不马上试试最明显的那个?:)你这么想和类型化的人一起摇滚?=)))
真的,你为什么不先试一下最明显的那个?:)你这么想用typedef来摇滚?=)))
我试过了!我确信我 不能用MQL来解除指针的定义,但事实证明这是微不足道的--我应该多加一些括号的!"。))))
HH:typedef是一个话题,我试过了,但也不太顺利,我还需要弄清楚我在哪里搞砸了,我的例子应该也可以用typedef来做!"。
为什么该指标可能只在M1图表上不工作,而在所有其他图表上却能正常工作,这是什么原因?(MQL5)。这是函数--当我在M1图表上给它0时,它不知何故没有将一个变量加起来
这意味着有一个开盘=收盘的蜡烛图,而代码写得不正确,没有包含除以0的检查,这个不幸的事实并不取决于TF。