错误、漏洞、问题 - 页 1736 1...172917301731173217331734173517361737173817391740174117421743...3184 新评论 fxsaber 2016.10.17 13:46 #17351 coderex:如果有人感兴趣,servicedesk的回答。На данный момент оператор *(dereference/indirection) можно использовать только для указателей на объекты классов и это rvalue我非常感兴趣!请用一个例子解释服务台的答案。& == GetPointer().* - 没有任何变化。 coderex 2016.10.17 14:07 #17352 fxsaber:我非常感兴趣!请用一个例子解释服务台的答案。& == GetPointer().* - 没有任何变化。 你需要什么例子? Alexey Navoykov 2016.10.17 14:20 #17353 coderex:如果有人感兴趣,答案是servicedesk。На данный момент оператор *(dereference/indirection) можно использовать только для указателей на объекты классов и это rvalue 前几天我给他们发了一个建议,关于为任何数据类型 引入指针。而这种荒谬的限制是令人讨厌的。 coderex 2016.10.17 14:35 #17354 Alexey Navoykov: 顺便说一下,我前几天给他们发了一份关于引入指针到任何数据类型 的提案。而这种可笑的限制已经让人厌烦。 最好能引入*操作符的重载,因为没有它,我们就无法实现与STL的同一性,也最好能完全引入类型化,而不仅仅是在calback`i上。 Alexey Navoykov 2016.10.17 14:43 #17355 coderex: 最好能引入*操作符的重载,因为没有它我们就无法实现与STL的同一性,同时最好能完全引入类型化,而不仅仅是在calback`i上。 是的,我同意。一切都处于某种未完成的状态。而在过载方面,我对幽灵操作者更感兴趣,没有它就很难做到。 fxsaber 2016.10.17 16:36 #17356 coderex: 你想要什么样的例子? 你想从*和&中得到什么。简单但能说明问题的东西。因此,你可以看到这种便利。 coderex 2016.10.17 17:04 #17357 fxsaber: 你想从*和&中得到什么。简单但能说明问题的东西。要看方便。我想要的东西我已经写在上面了。你可以用'&'运算符自己编一个例子,在那里你使用GetPointer(...),它基本上是一个简短的形式有'*'运算符的例子--我不知道它是否有助于你的理解。class Iterator { int m_value;public: Iterator(const int val) : m_value(val) { } int operator*() { return m_value; } };int main(int argc, char **argv) { Iterator *_it = new Iterator(5); int _val = **_it;//--- return 0;} 这在C++中是可行的,但在MQL中你必须做一个获取器来获取m_value。 fxsaber 2016.10.17 17:04 #17358 添加到帮助中,ChartRedraw(MainChartID)不适合用于重绘OBJ_CHART。ChartRedraw(ObjChartID)是必需的。因此,帮助中的例子是不正确的。 Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_CHART www.mql5.com Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_CHART - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 fxsaber 2016.10.17 20:59 #17359 请不要将比例限制在N<=5(条形下的面积大小=2^N)。这是必要的(而且已经成为权宜之计),以便能够更详细地查看勾股历史。 fxsaber 2016.10.18 06:40 #17360 请澄清一下。脚本class A{public: const int a; A( int c = 0 ) : a(c) {} virtual int f() { Print(__FUNCTION__); return(this.a); }};class B : public A{public: const int b; B( int c = 0 ) : A(c), b(this.f()){} virtual int f() { Print(__FUNCTION__); return(this.a); }};void OnStart(){ B b; A* a = new B; delete a;}结果2016.10.18 09:35:01.981 Test14 (GBPUSD,M1) B::f2016.10.18 09:35:01.981 Test14 (GBPUSD,M1) B::f输出B::F而不是A::f的原因是什么?脚本的写法是,f在构造函数主体执行之前被调用(黑体)。但此时,A基类的构造函数 已经被调用。这就是为什么this.f()在调用B的构造函数之前似乎完全指的是基类。请解释推理/预测的错误在哪里。 Errors, bugs, questions Any questions from newcomers 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 1...172917301731173217331734173517361737173817391740174117421743...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如果有人感兴趣,servicedesk的回答。
我非常感兴趣!请用一个例子解释服务台的答案。
& == GetPointer().* - 没有任何变化。
我非常感兴趣!请用一个例子解释服务台的答案。
& == GetPointer().* - 没有任何变化。
如果有人感兴趣,答案是servicedesk。
顺便说一下,我前几天给他们发了一份关于引入指针到任何数据类型 的提案。而这种可笑的限制已经让人厌烦。
最好能引入*操作符的重载,因为没有它我们就无法实现与STL的同一性,同时最好能完全引入类型化,而不仅仅是在calback`i上。
你想要什么样的例子?
你想从*和&中得到什么。简单但能说明问题的东西。要看方便。
我想要的东西我已经写在上面了。
你可以用'&'运算符自己编一个例子,在那里你使用GetPointer(...),它基本上是一个简短的形式
有'*'运算符的例子--我不知道它是否有助于你的理解。
{
int m_value;
public:
Iterator(const int val) : m_value(val) { }
int operator*() { return m_value; }
};
int main(int argc, char **argv) {
Iterator *_it = new Iterator(5);
int _val = **_it;
//---
return 0;
}
这在C++中是可行的,但在MQL中你必须做一个获取器来获取m_value。
添加到帮助中,ChartRedraw(MainChartID)不适合用于重绘OBJ_CHART。ChartRedraw(ObjChartID)是必需的。
因此,帮助中的例子是不正确的。
请不要将比例限制在N<=5(条形下的面积大小=2^N)。
这是必要的(而且已经成为权宜之计),以便能够更详细地查看勾股历史。
{
public:
const int a;
A( int c = 0 ) : a(c) {}
virtual int f()
{
Print(__FUNCTION__);
return(this.a);
}
};
class B : public A
{
public:
const int b;
B( int c = 0 ) : A(c), b(this.f()){}
virtual int f()
{
Print(__FUNCTION__);
return(this.a);
}
};
void OnStart()
{
B b;
A* a = new B;
delete a;
}
结果
2016.10.18 09:35:01.981 Test14 (GBPUSD,M1) B::f
输出B::F而不是A::f的原因是什么?脚本的写法是,f在构造函数主体执行之前被调用(黑体)。但此时,A基类的构造函数 已经被调用。这就是为什么this.f()在调用B的构造函数之前似乎完全指的是基类。请解释推理/预测的错误在哪里。