Дана строка таблицы состоящая из ячеек нескольких типов. Часть из них являются обычным полями текста OBJ_TEXT, часть - кнопками OBJ_BUTTON а часть - ячейками, в которых текст можно редактировать (OBJ_EDIT). Значения введенное в ячейку типа OBJ_EDIT запоминается, и в случае его корректности формируется некий приказ, который отправляется на выполнение внешней системе. В промежутке времени между отправкой приказа и получения ответа от системы необходимо заблокировать строку таблицы таким образом, что бы все ячейки с возможностью редактирования в них текста больше не позволяли вводить в них текст. Все кнопки входящие в строку таблицы не позволяли нажимать на себя, а в целом, все ячейки в которых есть текст, должны были бы изменить его цвет на красный, сигнализируя тем самым о своей блокировке. Строки входящие в таблицу не идентичны друг другу и не содержат регулярной структуры. Одна строка может содержать кнопку, тогда как другая нет. Одна строка может содержать какой-либо столбец, а другая нет и т.д.
瓦西里,请举个例子!
我只知道有一种情况,你需要分配内存并需要一个指针。
我相信你几乎总是可以不用它。最好不要使用手动内存管理。总有一个标准库已经解决了这些问题。
动态类型识别的存在通常表明一个项目的拐杖结构。
动态类型识别的存在表明了高度的多态性 和更高的抽象水平。它增加了项目的可管理性和可扩展性。允许你在接口层面上处理代码,并鼓励程序员不要去研究实现细节。
瓦西里,我认为你的例子是脱节的。有一些模板(µl中的宏),它们可以在编译阶段解决很多问题。而如果你必须做向下转换,你的程序设计得很差(甚至Straustrup也这么说)。
在严格的类型控制下,下行齿轮有什么问题?斯特劳斯鲁普是在没有任何类型控制的情况下这样说的。现在,如果你知道派生类型,你可以在转换开始前保证转换,从而避免运行时的错误。
但向下转换的优势是显而易见的。主要的是,它在接口层面上工作。如果一个基类的构造函数在被保护的范围内被关闭,那么它就是一个接口和抽象类,我们可以在它的层面上工作,而不需要知道它的子类的细化实现。但是如果我们根据实例类型实现多态行为,我们肯定可以指定相应实例的实现,例如调用其独特的方法。有了虚拟函数,我们甚至不需要类型转换。毕竟,虚拟函数 会在 "幕后 "调用具体的实现。
... 有了虚拟函数,甚至不需要进行类型转换。毕竟,虚拟函数会在 "幕后 "调用一个特定的实现。
在严格控制类型的情况下,下降的铸件有什么问题?
如果你写得正确,你根本不需要它。
P.S: 我不是把Samapal类型识别和虚拟函数 机制混为一谈。
一个来自真实MQL应用的例子。
我想听听专家的意见,他们将如何解决这样的问题。我个人使用动态类型识别、"模式法 "模式和降级转换解决了这个问题。这个问题解决得非常好,它终于使我能够用不规则的、完全可定制的元素创建复杂的交互式表格。结果是如此具体,以至于我发现声称德 "动态识别是一个拐杖 "和 "向下转换是邪恶的 "的说法是天真的。
p.s. 帕夫利克,顺便说一下,你仍然没有回答向下转换到底有什么问题。
不,我远不是一个专家。我所说的关于减速器的内容是我的经验,我努力这样写+它被我尊敬的人所证实。写一个程序来证明一些东西是在浪费我的时间。
帕夫利克,顺便说一句,你仍然没有回答到底是什么让裁员变得糟糕。
这很难解释。我理解,但我不能说)。书籍中可能会有更好的解释。
不,我远不是一个专家。