错误、漏洞、问题 - 页 1696 1...168916901691169216931694169516961697169816991700170117021703...3184 新评论 Vladimir Pastushak 2016.09.22 21:13 #16951 Stanislav Korotky:首先,我们不清楚是否试图将该方法声明为虚拟。如果它必须是虚拟的,那么就在基类中写上虚拟,而不是在派生类中写上虚拟(因为否则即使你把派生类的实例放进去,基类指针也会被扯到基类方法中)。如果你不想在派生类中覆盖一个方法,就根本不要提它,如果你要提,就应该用主体来覆盖。最后,为了将该方法从派生类中隐藏起来,你需要引入一个中间类,将该方法移到优先区域,或者在基类中使其成为私有的(但那样的话,为什么它是虚拟的?)下面是一个例子 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class roditel { public: virtual int one(void) { return 1; } virtual int two(void) { return 2; } virtual int three(void) { return 3; } }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class naslednic_1 : public roditel { public: virtual int two(void); virtual int three(void); }; naslednic_1 go; //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { go.two(); // 'two' - function must have a body TEst.mq4 42 7 } //+------------------------------------------------------------------+ Stanislav Korotky 2016.09.22 21:40 #16952 Vladimir Pastushak:下面是一个例子 这个例子和第一个例子差不多;-)。你打开了我的信,但还没有读?你想通过在子代中重新声明方法而不定义它们来达到什么目的?要调用基本的实现而没有新的实现,你不需要在后裔中提到它们。 Vladimir Pastushak 2016.09.22 21:56 #16953 Stanislav Korotky: 这个例子和第一个例子差不多;-)。我的信被打开了,但你没有读?你想通过在子代中重新声明方法,但不定义它们来达到什么目的?要调用一个基本的实现而没有新的实现,你不需要在子代中声明它们。我只想看到10个继承的方法 和在后代类中创建的方法。 我不需要190个方法,它们与当前类没有任何关系。例如,我有一个基类,其中描述了所有形状的最大属性,宽度、高度、角、半径、颜色、面积。基于这些属性方法,我做了一个子类,使用父类的方法,半径、颜色、面积......。但我在这里不需要拐角和宽度......。基于这些方法,我做了一个后裔三角形类,使用父类的方法,颜色、面积、角......。但我这里不需要半径......。当我问及原因时,父类有一组方法是所有的或一组形状所共有的,如颜色、样式方法。 Stanislav Korotky 2016.09.22 22:47 #16954 Vladimir Pastushak:我只想看到10个继承的方法 和在后代类中创建的方法。 我不需要190个方法,它们与当前类没有任何关系。例如,我有一个基类,其中描述了所有形状的最大属性,宽度、高度、角、半径、颜色、面积。基于这些属性方法,我做了一个圆的派生类,使用父类的方法,半径、颜色、面积......。但我在这里不需要拐角和宽度......。基于这些方法,我做了一个后裔三角形类,使用父类的方法,颜色、面积、角......。但我这里不需要半径......。当我问及原因时,父类有一组方法是所有的或一组形状所共有的,例如,方法颜色、样式。我不明白:这个问题--是一个问题还是一个承上启下的答案?通常他们是这样做的--在基类中是普通的,然后在子类中增加特殊的内容。为什么反过来做呢?目的是什么?但是,即使你不深入研究,我已经建议了一个选项--插入一个中间的子代,其中所有不必要的属性和方法都被移到私有部分。 Aleksey Vyazmikin 2016.09.22 23:11 #16955 向行政部门提问,什么时候可以看到新的最新的服务统计数据? Alexey Navoykov 2016.09.23 03:09 #16956 Vladimir Pastushak:父类中有200个方法,我只想看到10个继承的方法 加上子类中创建的方法,我不需要再有190个与当前类无关的方法。要做到这一点,你需要将继承声明为保护或私有。 然后覆盖你需要的方法。class naslednic_1 : protected roditel { public: virtual int two(void) { return roditel::two(); } virtual int three(void) { return roditel::three(); } }; Vladimir Pastushak 2016.09.23 05:12 #16957 Alexey Navoykov:要做到这一点,你需要将继承声明为保护或私有。 然后覆盖你想要的方法。斯坦尼斯拉夫-科罗茨基。我不明白:这个问题是一个问题还是一个不完整的答案?通常他们是这样做的--在基类中是一般的,然后在子类中增加特殊的内容。为什么要做相反的事?目的是什么?但是,即使你不太深入,我已经建议了一个选项--插入一个中间的子代,其中所有不必要的属性和方法都被移到私有部分。谢谢你。Alexey,你的例子不起作用,在任何情况下,孩子都会得到父母的方法,这些方法不应该被甩掉。 fxsaber 2016.09.23 08:20 #16958 我如何知道我的INDICATOR_SHORTNAME?IndicatorGet*-functions缺失! fxsaber 2016.09.23 08:22 #16959 Alexey Kozitsyn: 如果你在创建时改变了短名称怎么办?而且每次都有变化?如果指标包含指标缓冲区,自我识别就很容易,但如果没有缓冲区,我还没有看到解决方案。 Vladimir Karputov 2016.09.23 08:31 #16960 fxsaber: 我如何知道我的INDICATOR_SHORTNAME?IndicatorGet*-functions不存在! Print(MQLInfoString(MQL_PROGRAM_NAME)); 返回指标短名称。如果没有指定短名,则返回全名。 1...168916901691169216931694169516961697169816991700170117021703...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
首先,我们不清楚是否试图将该方法声明为虚拟。如果它必须是虚拟的,那么就在基类中写上虚拟,而不是在派生类中写上虚拟(因为否则即使你把派生类的实例放进去,基类指针也会被扯到基类方法中)。
如果你不想在派生类中覆盖一个方法,就根本不要提它,如果你要提,就应该用主体来覆盖。
最后,为了将该方法从派生类中隐藏起来,你需要引入一个中间类,将该方法移到优先区域,或者在基类中使其成为私有的(但那样的话,为什么它是虚拟的?)
下面是一个例子
下面是一个例子
这个例子和第一个例子差不多;-)。我的信被打开了,但你没有读?你想通过在子代中重新声明方法,但不定义它们来达到什么目的?要调用一个基本的实现而没有新的实现,你不需要在子代中声明它们。
我只想看到10个继承的方法 和在后代类中创建的方法。 我不需要190个方法,它们与当前类没有任何关系。
例如,我有一个基类,其中描述了所有形状的最大属性,宽度、高度、角、半径、颜色、面积。
基于这些属性方法,我做了一个子类,使用父类的方法,半径、颜色、面积......。但我在这里不需要拐角和宽度......。
基于这些方法,我做了一个后裔三角形类,使用父类的方法,颜色、面积、角......。但我这里不需要半径......。
当我问及原因时,父类有一组方法是所有的或一组形状所共有的,如颜色、样式方法。
我只想看到10个继承的方法 和在后代类中创建的方法。 我不需要190个方法,它们与当前类没有任何关系。
例如,我有一个基类,其中描述了所有形状的最大属性,宽度、高度、角、半径、颜色、面积。
基于这些属性方法,我做了一个圆的派生类,使用父类的方法,半径、颜色、面积......。但我在这里不需要拐角和宽度......。
基于这些方法,我做了一个后裔三角形类,使用父类的方法,颜色、面积、角......。但我这里不需要半径......。
当我问及原因时,父类有一组方法是所有的或一组形状所共有的,例如,方法颜色、样式。
我不明白:这个问题--是一个问题还是一个承上启下的答案?通常他们是这样做的--在基类中是普通的,然后在子类中增加特殊的内容。为什么反过来做呢?目的是什么?
但是,即使你不深入研究,我已经建议了一个选项--插入一个中间的子代,其中所有不必要的属性和方法都被移到私有部分。
父类中有200个方法,我只想看到10个继承的方法 加上子类中创建的方法,我不需要再有190个与当前类无关的方法。
要做到这一点,你需要将继承声明为保护或私有。 然后覆盖你需要的方法。
要做到这一点,你需要将继承声明为保护或私有。 然后覆盖你想要的方法。
我不明白:这个问题是一个问题还是一个不完整的答案?通常他们是这样做的--在基类中是一般的,然后在子类中增加特殊的内容。为什么要做相反的事?目的是什么?
但是,即使你不太深入,我已经建议了一个选项--插入一个中间的子代,其中所有不必要的属性和方法都被移到私有部分。
谢谢你。
Alexey,你的例子不起作用,在任何情况下,孩子都会得到父母的方法,这些方法不应该被甩掉。
如果你在创建时改变了短名称怎么办?
而且每次都有变化?
如果指标包含指标缓冲区,自我识别就很容易,但如果没有缓冲区,我还没有看到解决方案。
我如何知道我的INDICATOR_SHORTNAME?IndicatorGet*-functions不存在!