新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1096 1...108910901091109210931094109510961097109810991100110111021103...1953 新评论 Seric29 2020.03.20 00:22 #10951 我如何创建一个指向类方法 的指针? class qer{ public: int _int(int q){...} int int_(int q){...} };qer *_qer 你需要创建一个指向_int和int_ 函数的指针。 在mql4中,这里描述了一些关于指针和类的东西(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer),但没有注释,不清楚它的用途和作用是什么。在没有类的情况下,使用typedef来声明一个指针是很容易的,但我想了解它在类中是如何工作的。 试图将typedef应用于一个类的函数,得到一个错误的指针,这个函数类型还不支持,尝试了上面的说明,但因为没有显示什么,也没有注释,所以什么都没有用。 Vladimir Simakov 2020.03.20 04:29 #10952 Seric29: 我如何创建一个指向类方法 的指针? 你需要创建一个指向_int和int_ 函数的指针。 在mql4中,这里描述了一些关于指针和类的东西(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer),但没有注释,不清楚它的用途和作用是什么。在没有类的情况下,使用typedef来声明一个指针是很容易的,但我想了解它在类中是如何工作的。 试图将typedef应用于一个类函数,错误的是这个函数类型的指针还不支持,尝试了上面的说明,但由于没有显示它的用途,也没有注释,所以没有任何效果。 不能 Igor Makanu 2020.03.20 05:36 #10953 Vladimir Simakov: 你不能 https://www.mql5.com/ru/docs/basis/types/casting#dynamic_cast Vladimir Simakov 2020.03.20 05:57 #10954 Igor Makanu: https://www.mql5.com/ru/docs/basis/types/casting#dynamic_cast 错了。一个人需要一个指向类方法的指针,而不是一个后裔转换。 Igor Makanu 2020.03.20 06:32 #10955 Vladimir Simakov: 错了。一个人需要一个指向一个类的方法的指针,而不是指向一个继承者的指针。 没有别的办法,要么是没有访问控制的程序式,要么是有访问和类型控制的OOP。 好吧,别介意,作者总是有高度专业化的问题;) Koldun Zloy 2020.03.20 06:34 #10956 Seric29: 我如何创建一个指向类方法 的指针? 你需要创建一个指向_int和int_ 函数的指针。 在mql4中,这里描述了一些关于指针和类的东西(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer),但没有注释,不清楚它的用途和作用。在没有类的情况下,使用typedef来声明一个指针是很容易的,但我想了解它在类中是如何工作的。 试图将typedef应用于一个类的函数,得到一个错误的指针,这个函数类型还不支持,尝试了上面的指示,但因为没有显示什么,也没有注释,所以什么都没有用。 只是想知道:你打算如何使用它? Seric29 2020.03.20 13:17 #10957 为什么你需要保存整个类的指针,这里有一个例子https://docs.mql4.com/ru/basis/types/this //+------------------------------------------------------------------+ //| возвращает собственный указатель | //+------------------------------------------------------------------+ CDemoClass *CDemoClass::getDemoClass(void) { return(GetPointer(this)); } 事后如何处理? Seric29 2020.03.20 13:37 #10958 Vladimir Simakov: 你不能 问题来了:如果你不能这样做,为什么要在一个取函数的类中写函数?此外,有时你需要实现一个接口,有时你不知道该调用哪个函数。 Vladimir Simakov 2020.03.20 17:53 #10959 Seric29: 问题来了:如果你不能这样做,为什么要在一个取函数的 类中写函数?此外,有时你需要实现一个接口,有时你不知道该调用哪个函数。 这是如何做到的? Seric29 2020.03.20 18:56 #10960 Vladimir Simakov: 它是如何工作的? 一个指向函数的指针被作为参数传递。我看到没有人想出如何用类来做这件事。我也还是不明白为什么要返回一个指向类的指针。 这里有一些有趣的样本,但它们与我的问题没有关系。 #property strict class CStrategy; typedef bool (*SignalFn)(CStrategy*); // Global function definitions bool IsBuySignal(CStrategy*ptr) { return ptr.IsBuySignal(); } bool IsSellSignal(CStrategy*ptr) { return ptr.IsSellSignal(); } // Create an abstract base class class CStrategy { public: virtual bool IsBuySignal(void)=0; virtual bool IsSellSignal(void)=0; }; // Derived class class Strat1 : public CStrategy { public: // Implement the required functions bool IsBuySignal(void) { return true;} bool IsSellSignal(void) { return true;} }; void OnStart() { // instantiate a class Strat1 strat1; // Global functions work as expected SignalFn ptrSignalFn; // pointer to a signal function ptrSignalFn = IsBuySignal; if ( ptrSignalFn(&strat1) ) { Print("Is Buy"); } } 我在指南中也看到了类似的东西,但我已经关闭了这些网站,因为我的手受伤了,我还有工作要做。 1...108910901091109210931094109510961097109810991100110111021103...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我如何创建一个指向类方法 的指针?
你需要创建一个指向_int和int_ 函数的指针。
在mql4中,这里描述了一些关于指针和类的东西(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer),但没有注释,不清楚它的用途和作用是什么。在没有类的情况下,使用typedef来声明一个指针是很容易的,但我想了解它在类中是如何工作的。我如何创建一个指向类方法 的指针?
你需要创建一个指向_int和int_ 函数的指针。
在mql4中,这里描述了一些关于指针和类的东西(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer),但没有注释,不清楚它的用途和作用是什么。在没有类的情况下,使用typedef来声明一个指针是很容易的,但我想了解它在类中是如何工作的。你不能
https://www.mql5.com/ru/docs/basis/types/casting#dynamic_cast
https://www.mql5.com/ru/docs/basis/types/casting#dynamic_cast
错了。一个人需要一个指向一个类的方法的指针,而不是指向一个继承者的指针。
没有别的办法,要么是没有访问控制的程序式,要么是有访问和类型控制的OOP。
好吧,别介意,作者总是有高度专业化的问题;)
我如何创建一个指向类方法 的指针?
你需要创建一个指向_int和int_ 函数的指针。
在mql4中,这里描述了一些关于指针和类的东西(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer),但没有注释,不清楚它的用途和作用。在没有类的情况下,使用typedef来声明一个指针是很容易的,但我想了解它在类中是如何工作的。只是想知道:你打算如何使用它?
为什么你需要保存整个类的指针,这里有一个例子https://docs.mql4.com/ru/basis/types/this
事后如何处理?
你不能
问题来了:如果你不能这样做,为什么要在一个取函数的类中写函数?此外,有时你需要实现一个接口,有时你不知道该调用哪个函数。
问题来了:如果你不能这样做,为什么要在一个取函数的 类中写函数?此外,有时你需要实现一个接口,有时你不知道该调用哪个函数。
这是如何做到的?
它是如何工作的?
一个指向函数的指针被作为参数传递。我看到没有人想出如何用类来做这件事。我也还是不明白为什么要返回一个指向类的指针。
这里有一些有趣的样本,但它们与我的问题没有关系。
我在指南中也看到了类似的东西,但我已经关闭了这些网站,因为我的手受伤了,我还有工作要做。