文章 "在 MQL5 中使用对象指针" - 页 2 12345 新评论 kogriv 2011.01.07 16:54 #11 下午好。我是一名初学者。我有一个关于使用 "*"图标(星号)的问题。 在示例列表文件中class CListItem { private: int ID; CListItem *next; CListItem *prev; *"用于声明指向对象的指针--这一点已经很清楚了。 下一个:public: ~CListItem(); ... CListItem* next(){return(next);} CListItem* prev(){return(prev);} 不清楚 "*"号的用途。 根据帮助,"可以动态创建复杂类型的对象。 这里没有使用 new 操作符。请更详细地解释如何使用 "*"号,以及在什么情况下使用 "*"号。 Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new www.mql5.com Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5 Rashid Umarov 2011.01.07 18:04 #12 kogriv:然而不清楚这里的 "*"符号是什么意思。你可以这样写public: ~CListItem(); ... CListItem *next(){return(next);} CListItem *prev(){return(prev);}没有区别,只是设计风格和意识形态上的小区别。 kogriv 2011.01.07 18:21 #13 Rosh:可以这样写没有区别,只是设计风格和意识形态上的一点不同。 例如CListItem *next(){return(next);} 这是一个指向对象(或方法?)next()的指针的声明?然后,在大括号中返回的是对象 next 本身? 我的理解正确吗? 我知道一切都应该非常简单,但由于我以前没有接触过 OOP,所以我在三棵松中徘徊。请让我明白。 Rashid Umarov 2011.01.07 18:26 #14 kogriv: 即是指向对象(或方法?)next() 的指针的声明? 上面说 next() 函数返回一个指向CListItem 类 变量的指针。 Rashid Umarov 2011.01.07 18:28 #15 kogriv: 然后,在大括号中返回下一个对象本身? 我的理解对吗?大括号中给出了函数的主体、{return(next);}这意味着函数将返回变量 next,它的类型是指向 CListItem类对象的 指针。这通常与函数的类型一致。 Документация по MQL5: Основы языка / Типы данных / Структуры и классы www.mql5.com Основы языка / Типы данных / Структуры и классы - Документация по MQL5 Yedelkin 2011.02.20 21:02 #16 在第一个示例之后,文章中有这样一句话:"pstatus 变量是一个对象的指针,但我们故意 "忘记 "使用new 运算符创建对象本身,并将其 作为参数传递 给PrintStatus() 函数"。 1.不清楚你传递的 "到底是 "什么--指针还是对象? 2.示例中没有PrintStatus() 函数。 [删除] 2012.02.18 17:26 #17 我认为有一个错误://+------------------------------------------------------------------+ //| 向列表中添加一个项目| //+------------------------------------------------------------------+ CList::addItem(CListItem *item) { //--- 首先检查传递指针的正确性 if(CheckPointer(item)==POINTER_INVALID) return; //--- 增加列表中的项目数 m_counter++; //--- 如果列表中还没有项目 if(CheckPointer(first)!=POINTER_DYNAMIC) { first=item; } else { //--- 将项目设置为前一个对象的指针----------------------- 错误开始----------------------- item.prev(first); //--- 记住当前第一个元素的指针 CListItem *p=first; //--- 将收到的项目放在第一个项目的位置上 first=item; //--- 为列表中的第一个元素设置下一个对象的指针 first.next(p); } } 新的列表元素似乎有 prev 和 first 引用第二个元素,而第二个元素没有获得对第一个元素的引用。 Rashid Umarov 2012.02.20 07:54 #18 Yedelkin:在第一个示例之后,文章中出现了这样一句话:"pstatus 变量是一个对象指针,但我们故意 "忘记 "使用new 操作符创建对象本身,并将其 作为参数传递 给PrintStatus() 函数"。1.不清楚传递的到底是什么--指针还是对象?2.示例中没有PrintStatus() 函数。迟到总比不到好。谢谢,已在文章中修正。删除了句尾部分在第一个示例之后,文章中有这样一句话:"pstatus 变量是一个对象的指针,但我们故意 "忘记 "使用new 运算符创建对象本身,并将其 作为参数传递 给PrintStatus() 函数"。 Rashid Umarov 2012.02.20 08:42 #19 220Volt:我认为有一个错误: 新的列表元素似乎有 prev 和 first 引用第二个元素,而第二个元素并没有获得对第一个元素的引用。是的,有一个错字。应该是 else { //--- 设置项目 указатель предыдущего объекта item.prev(first); 应该else { //--- 设置为第一个 указатель предыдущего объекта first.prev(item); 更正。 [删除] 2014.01.23 06:37 #20 我仍然不理解 MQL5 和 MQL4 中的指针和引用。除了额外的代码,引用传递和指针传递有什么区别?在 C++ 中是有区别的,但在这里有什么区别?如果不难,请写出更详细的信息。 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
下午好。我是一名初学者。我有一个关于使用 "*"图标(星号)的问题。
在示例列表文件中
*"用于声明指向对象的指针--这一点已经很清楚了。
下一个:
不清楚 "*"号的用途。
根据帮助,"可以动态创建复杂类型的对象。 这里没有使用 new 操作符。请更详细地解释如何使用 "*"号,以及在什么情况下使用 "*"号。
然而
不清楚这里的 "*"符号是什么意思。
你可以这样写
没有区别,只是设计风格和意识形态上的小区别。
可以这样写
没有区别,只是设计风格和意识形态上的一点不同。
例如
CListItem *next(){return(next);}
这是一个指向对象(或方法?)next()的指针的声明?然后,在大括号中返回的是对象 next 本身? 我的理解正确吗?
我知道一切都应该非常简单,但由于我以前没有接触过 OOP,所以我在三棵松中徘徊。请让我明白。
即
是指向对象(或方法?)next() 的指针的声明?
然后,在大括号中返回下一个对象本身? 我的理解对吗?
大括号中给出了函数的主体、
{return(next);}
这意味着函数将返回变量 next,它的类型是指向 CListItem类对象的 指针。这通常与函数的类型一致。
在第一个示例之后,文章中有这样一句话:"pstatus 变量是一个对象的指针,但我们故意 "忘记 "使用new 运算符创建对象本身,并将其 作为参数传递 给PrintStatus() 函数"。
1.不清楚你传递的 "到底是 "什么--指针还是对象?
2.示例中没有PrintStatus() 函数。
我认为有一个错误:
新的列表元素似乎有 prev 和 first 引用第二个元素,而第二个元素没有获得对第一个元素的引用。在第一个示例之后,文章中出现了这样一句话:"pstatus 变量是一个对象指针,但我们故意 "忘记 "使用new 操作符创建对象本身,并将其 作为参数传递 给PrintStatus() 函数"。
1.不清楚传递的到底是什么--指针还是对象?
2.示例中没有PrintStatus() 函数。
迟到总比不到好。谢谢,已在文章中修正。删除了句尾部分
在第一个示例之后,文章中有这样一句话:"pstatus 变量是一个对象的指针,但我们故意 "忘记 "使用new 运算符创建对象本身,并将其 作为参数传递 给PrintStatus() 函数"。
我认为有一个错误:
新的列表元素似乎有 prev 和 first 引用第二个元素,而第二个元素并没有获得对第一个元素的引用。是的,有一个错字。应该是
应该
更正。我仍然不理解 MQL5 和 MQL4 中的指针和引用。除了额外的代码,引用传递和指针传递有什么区别?在 C++ 中是有区别的,但在这里有什么区别?如果不难,请写出更详细的信息。