mql5语言的特点、微妙之处以及技巧 - 页 124 1...117118119120121122123124125126127128129130131...247 新评论 Artyom Trishkin 2019.01.25 18:06 #1231 与本主题无关的评论已被移至"OOP,模板,mql5中的宏, 交易的技巧和诀窍"。 Ilya Malev 2019.01.26 02:53 #1232 我不知道它是否被贴在这里,但它可能对某人有用。当你想重载一个参数化类的方法时,只需要看它是通过值还是通过引用接受相同类型的参数(结构只通过引用,简单类型最常通过值)。可以这样做(第二种方式正好适用于没有&的变体,否则基本结构类型将无法编译)。 template<typename T> class A { public: A* operator<<(T&p){ Print("<< &",typename(T)); return &this; } template<typename F> A* operator<<(F p){ Print("<< ",typename(F)); return &this; } }; void OnStart() { double ask=Ask,bid=Bid; MqlTick mt; A<double> a1; a1<<Ask<<Bid<<ask; A<MqlTick> a2; a2<<mt; } 在这里 讨论。 Alexey Navoykov 2019.01.26 12:52 #1233 Ilya Malev:我不记得是否在这里,但它可能对某人有用。当你想只通过值或只通过引用来重载一个参数化类的方法时(结构只通过引用,简单类型最常通过值)。这可以这样做(此外,第二个模板正好适用于没有&的变体,否则基本的结构类型将无法编译)。然后发现,一个为结构类型设计的类可以接受各种数字类型。又该如何处理它们呢? Ilya Malev 2019.01.26 20:11 #1234 Alexey Navoykov:然后发现,一个为结构类型设计的类可以接受各种数字类型。又该如何处理它们呢?在这种情况下,该类旨在用于混合类型--用于结构和简单类型,否则这种结构就没有意义。为了避免在F中采取不必要的类型,你可以在那里对tyename(F)、sizeof(F)等写一个检查。 Alexey Navoykov 2019.01.26 20:33 #1235 Ilya Malev:在这种情况下,类是用于混合类型的--既用于结构,也用于简单类型,否则这种结构就没有意义。为了不接受F中不必要的类型,你可以在那里写一个对tyename(F)、sizeof(F)等的检查。Typename不会保护接受不必要的类型)为此,你需要用适当的类型做一个重载的私有方法。 而且,如果类是为任何类型准备的,为什么要用模板参数将其参数化,造成混乱?虽然有更简单的拐杖变体,没有模板类。 Ilya Malev 2019.01.26 20:39 #1236 Alexey Navoykov:如果一个类打算是任何类型的,为什么要用模板参数对其进行参数化,造成混乱?那么,你如何在不提交参数化的情况下采取正确的类型,可以是任何类型?你不能在没有指定类型的情况下声明一个参数或字段。例如,它可以是一个任意数据类型 上的 "包装 "类。阿列克谢-纳沃伊科夫。typename并不能防止接受不必要的类型 )如果你写tyename(F)==typename(T),它就会保护。 Alexey Navoykov 2019.01.26 20:52 #1237 Ilya Malev:那么,你将如何接受正确的类型,它可以是任何东西,而不传递参数化?你不能在没有指定类型的情况下声明一个参数或字段。例如,它可以是一个任意数据类型 的 "包装 "类。好吧,那么它只是A类。如果一个模式的参数与该类的行为没有任何关系,为什么要声明这个模式呢? Ilya Malev:如果你写tyename(F)==typename(T),它将保护它。 这真的是一件很残酷的事情。你将不得不把类型名控制带到运行时阶段。你的代码将不得不调试多年 Nikita Chernyshov 2019.02.04 10:12 #1238 你能告诉我在哪里可以查到一个普通的追踪止损,只需5美元? Vladimir Karputov 2019.02.04 10:18 #1239 Nikita Chernyshov: 你能告诉我在哪里可以查到一个普通的追踪止损,只需5美元?iSAR iOsMA EA-追踪 Nikita Chernyshov 2019.02.04 10:21 #1240 Vladimir Karputov:iSAR iOsMA EA-追踪谢谢你! 1...117118119120121122123124125126127128129130131...247 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我不知道它是否被贴在这里,但它可能对某人有用。当你想重载一个参数化类的方法时,只需要看它是通过值还是通过引用接受相同类型的参数(结构只通过引用,简单类型最常通过值)。可以这样做(第二种方式正好适用于没有&的变体,否则基本结构类型将无法编译)。
在这里 讨论。
我不记得是否在这里,但它可能对某人有用。当你想只通过值或只通过引用来重载一个参数化类的方法时(结构只通过引用,简单类型最常通过值)。这可以这样做(此外,第二个模板正好适用于没有&的变体,否则基本的结构类型将无法编译)。
然后发现,一个为结构类型设计的类可以接受各种数字类型。又该如何处理它们呢?
然后发现,一个为结构类型设计的类可以接受各种数字类型。又该如何处理它们呢?
在这种情况下,该类旨在用于混合类型--用于结构和简单类型,否则这种结构就没有意义。为了避免在F中采取不必要的类型,你可以在那里对tyename(F)、sizeof(F)等写一个检查。
在这种情况下,类是用于混合类型的--既用于结构,也用于简单类型,否则这种结构就没有意义。为了不接受F中不必要的类型,你可以在那里写一个对tyename(F)、sizeof(F)等的检查。
Typename不会保护接受不必要的类型)为此,你需要用适当的类型做一个重载的私有方法。
而且,如果类是为任何类型准备的,为什么要用模板参数将其参数化,造成混乱?虽然有更简单的拐杖变体,没有模板类。
如果一个类打算是任何类型的,为什么要用模板参数对其进行参数化,造成混乱?
那么,你如何在不提交参数化的情况下采取正确的类型,可以是任何类型?你不能在没有指定类型的情况下声明一个参数或字段。例如,它可以是一个任意数据类型 上的 "包装 "类。
typename并不能防止接受不必要的类型 )
如果你写tyename(F)==typename(T),它就会保护。
那么,你将如何接受正确的类型,它可以是任何东西,而不传递参数化?你不能在没有指定类型的情况下声明一个参数或字段。例如,它可以是一个任意数据类型 的 "包装 "类。
好吧,那么它只是A类。如果一个模式的参数与该类的行为没有任何关系,为什么要声明这个模式呢?
如果你写tyename(F)==typename(T),它将保护它。
这真的是一件很残酷的事情。你将不得不把类型名控制带到运行时阶段。你的代码将不得不调试多年
你能告诉我在哪里可以查到一个普通的追踪止损,只需5美元?
iSAR iOsMA EA-追踪
iSAR iOsMA EA-追踪
谢谢你!