mql5中的OOP、模板和宏,细微之处和用途 - 页 13 1...67891011121314151617181920...28 新评论 Alexey Navoykov 2019.01.26 15:32 #121 就在昨天,我们还在讨论这个 关于抽象方法的bug,但今天我在我的代码中也遇到了同样的bug ) 我以前在基类中有非抽象的虚拟方法,所以我从继承类中引用它,然后我决定把这个方法变成抽象的,但编译器没有通知我它不再可引用。结果,递归错误是最讨厌的,也是最难发现的,而我却浪费了大量的时间。现在我认为,带有默认抽象方法体的功能 在这里将非常有用,至少在这个bug被修复之前。 Ilya Malev 2019.01.26 20:08 #122 Alexey Navoykov:是的,为了尽可能方便地将苍蝇分配到肉片上,甚至没有人眨一下眼睛 )如果赋值过程中把苍蝇带到了切糕上(或在不可能的情况下给出一个错误),那么就没有什么问题了。 阿列克谢-纳沃伊科夫。1.好吧,那么它只是A类。如果它的参数与该类的行为没有任何意义,为什么要声明一个模式? 2)这太麻烦了。将类型控制转移到执行阶段...你的代码将不得不调试多年1. "只是A类 "不能包含一个没有其(类)参数化的任意类型的字段。如果没有我所描述的这些舞动,就不可能对一个通过引用和通过值的类参数进行统一处理。 2.你已经把它当做口头禅了--在这种情况下,绝对毫不含糊的记录保证F就是T,那就像没有第二个模板的记录一样。但是没有。又是 "我将花费数年时间进行调试")))))) Alexey Navoykov 2019.01.26 20:39 #123 Ilya Malev:1. "只是A类 "不能包含一个没有其(类)参数化的任意类型的域。如果没有我所描述的那些修补工作,就不可能通过引用和值来统一处理类参数。 2.你已经把它当成了口头禅--在这种情况下,绝对毫不含糊的记录保证F就是T,那就像没有第二个模板的记录一样。但是没有。又是 "我以后会花几年时间调试"))))))你为什么要在这个主题中回复? 代码在一个地方,讨论在另一个地方...。) 1.是的,一切都可以用人来做,而且几乎不用跳舞。 struct __A { template<typename T> void f(T&) { } // Сюда структуры и классы }; struct A : __A { template<typename T> void f(T) { } // Сюда простые типы и указатели };2.这不是我所说的,但不要紧。 Ilya Malev 2019.01.26 20:50 #124 Alexey Navoykov:你为什么要在这个主题中回答? 代码在一个地方,讨论在另一个地方。) 1.是的,一切都可以用人类的方式完成,而且几乎不用跳舞。 2.那里有别的东西,但这不是重点。你还不是版主,无法确定在哪个主题中什么更合适。而且版主已经明确表示,关于功能的讨论不应该在功能分支本身进行,而应该在一个单独的分支,即这里。 在你的描述中,根本不清楚如何通过引用和T型值来统一引用一个类方法。我不知道你说的是什么意思,但这正是我在那里的意思。 Alexey Navoykov 2019.01.26 20:55 #125 Ilya Malev:你还不是版主,要决定哪些主题更合适。而且版主已经明确表示,关于功能的讨论不应该在功能的分支中进行,而应该在一个单独的主题中进行,即这里。因此,如果版主想移动它,那是一回事,但为什么要自己制造混乱呢? 比如说,我就没有意愿去翻阅这些主题。 Ilya Malev 2019.01.26 20:57 #126 Alexey Navoykov:因此,如果版主想移动它,那是一回事,但为什么要自己制造混乱呢? 比如说,我就没有意愿去翻阅这些主题。如果你知道版主会做这样的事情,最好是自己做,而不是等待版主来做。然而,讨论版主的行为也不是版主最喜欢的菜单之一,所以我们最好停止讨论。 Ilya Malev 2019.01.26 21:03 #127 Alexey Navoykov: Сюда простые типы и указатели顺便说一下,对于指针来说,用T*参数做一个单独的方法是合乎逻辑的,因为肯定不会产生混淆,好处是最常见的是处理指针与普通类型不同(有效性检查、删除等)。 Ilya Malev 2019.01.26 21:12 #128 Alexey Navoykov:代码在一个地方,讨论在另一个地方以下是代码。 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; } }; 其实除了这个条目,还有一个解决方案:用名字列出所有用值传递的简单类型,然后用&写一个模板方法,这样也不会有错误。这个选项适用于没有内在参数化的类 Alexey Navoykov 2019.01.26 21:15 #129 Ilya Malev:如果你意识到版主很可能会这样做--与其等着版主来做,不如自己来做,这总是更好。然而,讨论版主的行为也不是版主最喜欢的菜单,所以我们最好停止讨论。 一个版主肯定不会把讨论分成不同的主题。 你可能很想连自己都禁掉,"不等版主来做")) Artyom Trishkin 2019.01.26 21:42 #130 Ilya Malev:如果你意识到版主很可能会这样做--与其等着版主来做,不如自己来做,这总是更好。但是,讨论版主的行为也不是版主最喜欢的菜单,所以我们最好还是停止讨论。1.最好是马上开始谈论一些事情,这个 "事情 "的位置,而不是考虑主持人如何做。否则,一切都会变得模糊不清,变成两条线,现在,即使版主决定讨论应该在那里或那里,要正常移动讨论,保留帖子的顺序和意义,也是一件相当费力的事情。 2 讨论版主的行为并不是每一个喷嚏...这不是每个喷嚏,但如果你想公开挑战他,让他清理或安抚那些疯狂的人。如果你有意见,谁禁止你表达?也许你的意见是一个非常理性的建议,但你不敢说出来,以免落入版主不爱的菜单?所以那是胡说八道 :) 1...67891011121314151617181920...28 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
就在昨天,我们还在讨论这个 关于抽象方法的bug,但今天我在我的代码中也遇到了同样的bug ) 我以前在基类中有非抽象的虚拟方法,所以我从继承类中引用它,然后我决定把这个方法变成抽象的,但编译器没有通知我它不再可引用。结果,递归错误是最讨厌的,也是最难发现的,而我却浪费了大量的时间。现在我认为,带有默认抽象方法体的功能 在这里将非常有用,至少在这个bug被修复之前。
是的,为了尽可能方便地将苍蝇分配到肉片上,甚至没有人眨一下眼睛 )
如果赋值过程中把苍蝇带到了切糕上(或在不可能的情况下给出一个错误),那么就没有什么问题了。
1.好吧,那么它只是A类。如果它的参数与该类的行为没有任何意义,为什么要声明一个模式?
2)这太麻烦了。将类型控制转移到执行阶段...你的代码将不得不调试多年
1. "只是A类 "不能包含一个没有其(类)参数化的任意类型的字段。如果没有我所描述的这些舞动,就不可能对一个通过引用和通过值的类参数进行统一处理。
2.你已经把它当做口头禅了--在这种情况下,绝对毫不含糊的记录保证F就是T,那就像没有第二个模板的记录一样。但是没有。又是 "我将花费数年时间进行调试"))))))
1. "只是A类 "不能包含一个没有其(类)参数化的任意类型的域。如果没有我所描述的那些修补工作,就不可能通过引用和值来统一处理类参数。
2.你已经把它当成了口头禅--在这种情况下,绝对毫不含糊的记录保证F就是T,那就像没有第二个模板的记录一样。但是没有。又是 "我以后会花几年时间调试"))))))
你为什么要在这个主题中回复? 代码在一个地方,讨论在另一个地方...。)
1.是的,一切都可以用人来做,而且几乎不用跳舞。
2.这不是我所说的,但不要紧。
你为什么要在这个主题中回答? 代码在一个地方,讨论在另一个地方。)
1.是的,一切都可以用人类的方式完成,而且几乎不用跳舞。
2.那里有别的东西,但这不是重点。
你还不是版主,无法确定在哪个主题中什么更合适。而且版主已经明确表示,关于功能的讨论不应该在功能分支本身进行,而应该在一个单独的分支,即这里。
在你的描述中,根本不清楚如何通过引用和T型值来统一引用一个类方法。我不知道你说的是什么意思,但这正是我在那里的意思。
你还不是版主,要决定哪些主题更合适。而且版主已经明确表示,关于功能的讨论不应该在功能的分支中进行,而应该在一个单独的主题中进行,即这里。
因此,如果版主想移动它,那是一回事,但为什么要自己制造混乱呢? 比如说,我就没有意愿去翻阅这些主题。
因此,如果版主想移动它,那是一回事,但为什么要自己制造混乱呢? 比如说,我就没有意愿去翻阅这些主题。
如果你知道版主会做这样的事情,最好是自己做,而不是等待版主来做。然而,讨论版主的行为也不是版主最喜欢的菜单之一,所以我们最好停止讨论。
Сюда простые типы и указатели
顺便说一下,对于指针来说,用T*参数做一个单独的方法是合乎逻辑的,因为肯定不会产生混淆,好处是最常见的是处理指针与普通类型不同(有效性检查、删除等)。
代码在一个地方,讨论在另一个地方
以下是代码。
其实除了这个条目,还有一个解决方案:用名字列出所有用值传递的简单类型,然后用&写一个模板方法,这样也不会有错误。这个选项适用于没有内在参数化的类
如果你意识到版主很可能会这样做--与其等着版主来做,不如自己来做,这总是更好。然而,讨论版主的行为也不是版主最喜欢的菜单,所以我们最好停止讨论。
如果你意识到版主很可能会这样做--与其等着版主来做,不如自己来做,这总是更好。但是,讨论版主的行为也不是版主最喜欢的菜单,所以我们最好还是停止讨论。
1.最好是马上开始谈论一些事情,这个 "事情 "的位置,而不是考虑主持人如何做。否则,一切都会变得模糊不清,变成两条线,现在,即使版主决定讨论应该在那里或那里,要正常移动讨论,保留帖子的顺序和意义,也是一件相当费力的事情。
2 讨论版主的行为并不是每一个喷嚏...这不是每个喷嚏,但如果你想公开挑战他,让他清理或安抚那些疯狂的人。如果你有意见,谁禁止你表达?也许你的意见是一个非常理性的建议,但你不敢说出来,以免落入版主不爱的菜单?所以那是胡说八道 :)