给OOP专家的一个问题。 - 页 35 1...282930313233343536373839404142...55 新评论 Dmitry Fedoseev 2019.10.05 18:48 #341 Реter Konow: 在层次结构中某处有共同根的子类之间如何建立交叉链接? 比如说。F类和Z类是一个继承链的末端环节,在层次结构中有一个共同的根,即A类。 如何从F类中获得Z类的数据或方法? 你不能。没有这样的事情。但没有必要这样做。 在创建对象 后,你可以从一个对象传递一个指针到第二个对象,以及从第二个对象传递一个指针到第一个对象。 虽然,如果我们是专门谈论类,你可以通过两个冒号来称呼任何对象。但你需要它做什么呢?当然,有时是需要的,但这是一个极小的OOP特性。 Реter Konow 2019.10.05 18:57 #342 Dmitry Fedoseev: 不可能。没有这样的事情。但你不需要这样做。 在创建对象 后,你可以把一个对象的指针传给第二个,把第二个的指针传给第一个。 虽然,如果我们是专门谈论类,你可以通过两个冒号来指代任何东西。但你需要它做什么呢? 这完全取决于F类解决的是什么任务。可能会有这样一种情况,在第三方继承链中使用的数据或方法可能是有用的。 Реter Konow 2019.10.05 19:15 #343 例子。F类存储颜色和长度方法,Z类存储声音和宽度方法。 出现了一个物体,它有两个属性,长度和宽度,但它们是由不同的F和Z类计算的。该怎么做?创建一个单独的类,重复这些方法,或者我如何访问它们?(带四点的?)。 Dmitry Fedoseev 2019.10.05 19:29 #344 Реter Konow: 例子。F类存储颜色和长度方法,Z类存储声音和宽度方法。 出现了一个物体,它有两个属性,长度和宽度,但它们是由不同的F和Z类计算的。该怎么做?创建一个单独的类,重复这些方法,或者我如何访问它们?(带四点的?)。 你可以创建一个新的类,并将F和Z类包括在其中。 class F{ }; class Z{ }; class Y{ public: F f; Z z; } Реter Konow 2019.10.05 19:31 #345 Dmitry Fedoseev: 你可以创建一个新的类,并在其中包括F和Z类。 弓箭班?明白了,谢谢。 Artyom Trishkin 2019.10.05 19:34 #346 Dmitry Fedoseev:你可以创建一个新的类,并在其中包括F和Z类。 或者你可以在你想要其他类的数据的地方做一个方法,以获得一个 指向所需类的指针。 Artyom Trishkin 2019.10.05 19:36 #347 Реter Konow: 一类 "弓"?明白了,谢谢。 你可以直接得到一个你想要的类的指针,然后用这个指针得到一个类对象。但是你必须小心,不要得到一个指向空的或新的类对象的指针。 Реter Konow 2019.10.05 19:46 #348 Artyom Trishkin: 你可以简单地获得一个指向所需类的指针,并使用该指针来获得一个类对象。但你必须小心,不要得到一个指向空类对象的指针。 细微之处。我明白了,当数据可以清楚地分类、预先定义和毫不含糊时,继承的层次结构是很方便的。随着对象变得更加复杂,可能会出现类中没有预料到的方法和属性组合,这就需要构建 "绑定"--即类之间的交叉链接。这并不总是很方便,而且可能会破坏漂亮的分配方案,并迫使进行修订。 Artyom Trishkin 2019.10.05 19:48 #349 Реter Konow: 一个 "鞠躬 "班?我明白了。哎呀。 在这个例子中 class F{ }; class Z{ }; class Y{ public: F f; Z z; } Y类包含具有F和Z类类型的变量。 但如果你已经在某处创建并使用了F和Z类的对象,你将无法在对象Y中访问它们。在对象Y中会有两个新的类F和Z的对象。 而要获得对早先创建的、已经使用过的F和Z类对象的访问,你需要在Y类中获得对F和Z类对象的引用--那么Y类就可以用这些已经写在F和Z中的数据进行操作,而不是使用新的、原始的F和Z。 但是,如果你创建了这样一个对象,那么它里面的F和Z会给人以访问类F和Z的机会,而你只能通过类Y来填充它们--同样,从它那里给人以访问对象F和Z的机会,得到一个你需要的对象的指针,并通过指针来处理它。 Artyom Trishkin 2019.10.05 19:52 #350 Реter Konow: 细微之处。我明白了,当数据可以清楚地分类、预先定义和毫不含糊时,继承的层次结构是很方便的。随着对象变得越来越复杂,可能会出现并非为类准备的方法和属性的组合,这就需要建立 "绑定"--即类之间的交叉链接。这并不总是很方便,而且可能会破坏美丽的分配方案,并迫使它被修改。 你不需要破坏任何东西--你只需要在类中添加一个方法,给出一个指向另一个类的所需对象的指针。 在最近的文章中,我以这种方式将已经创建并工作的符号集合类对象 和已经积累了数据的当前账户对象的指针传递给交易对象。而贸易阶层处理这些问题时,就像一直拥有这些问题一样。 1...282930313233343536373839404142...55 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在层次结构中某处有共同根的子类之间如何建立交叉链接?
比如说。F类和Z类是一个继承链的末端环节,在层次结构中有一个共同的根,即A类。
如何从F类中获得Z类的数据或方法?
你不能。没有这样的事情。但没有必要这样做。
在创建对象 后,你可以从一个对象传递一个指针到第二个对象,以及从第二个对象传递一个指针到第一个对象。
虽然,如果我们是专门谈论类,你可以通过两个冒号来称呼任何对象。但你需要它做什么呢?当然,有时是需要的,但这是一个极小的OOP特性。
不可能。没有这样的事情。但你不需要这样做。
在创建对象 后,你可以把一个对象的指针传给第二个,把第二个的指针传给第一个。
虽然,如果我们是专门谈论类,你可以通过两个冒号来指代任何东西。但你需要它做什么呢?
例子。F类存储颜色和长度方法,Z类存储声音和宽度方法。
出现了一个物体,它有两个属性,长度和宽度,但它们是由不同的F和Z类计算的。该怎么做?创建一个单独的类,重复这些方法,或者我如何访问它们?(带四点的?)。
例子。F类存储颜色和长度方法,Z类存储声音和宽度方法。
出现了一个物体,它有两个属性,长度和宽度,但它们是由不同的F和Z类计算的。该怎么做?创建一个单独的类,重复这些方法,或者我如何访问它们?(带四点的?)。
你可以创建一个新的类,并将F和Z类包括在其中。
你可以创建一个新的类,并在其中包括F和Z类。
你可以创建一个新的类,并在其中包括F和Z类。
或者你可以在你想要其他类的数据的地方做一个方法,以获得一个 指向所需类的指针。
一类 "弓"?明白了,谢谢。
你可以直接得到一个你想要的类的指针,然后用这个指针得到一个类对象。但是你必须小心,不要得到一个指向空的或新的类对象的指针。
你可以简单地获得一个指向所需类的指针,并使用该指针来获得一个类对象。但你必须小心,不要得到一个指向空类对象的指针。
一个 "鞠躬 "班?我明白了。哎呀。
在这个例子中
Y类包含具有F和Z类类型的变量。
但如果你已经在某处创建并使用了F和Z类的对象,你将无法在对象Y中访问它们。在对象Y中会有两个新的类F和Z的对象。
而要获得对早先创建的、已经使用过的F和Z类对象的访问,你需要在Y类中获得对F和Z类对象的引用--那么Y类就可以用这些已经写在F和Z中的数据进行操作,而不是使用新的、原始的F和Z。
但是,如果你创建了这样一个对象,那么它里面的F和Z会给人以访问类F和Z的机会,而你只能通过类Y来填充它们--同样,从它那里给人以访问对象F和Z的机会,得到一个你需要的对象的指针,并通过指针来处理它。
细微之处。我明白了,当数据可以清楚地分类、预先定义和毫不含糊时,继承的层次结构是很方便的。随着对象变得越来越复杂,可能会出现并非为类准备的方法和属性的组合,这就需要建立 "绑定"--即类之间的交叉链接。这并不总是很方便,而且可能会破坏美丽的分配方案,并迫使它被修改。
你不需要破坏任何东西--你只需要在类中添加一个方法,给出一个指向另一个类的所需对象的指针。
在最近的文章中,我以这种方式将已经创建并工作的符号集合类对象 和已经积累了数据的当前账户对象的指针传递给交易对象。而贸易阶层处理这些问题时,就像一直拥有这些问题一样。