在休息室谈论巴解组织的问题 - 页 8

 
Maxim Dmitrievsky:

可能是因为我几乎不理解这个代码 :)

对不起,我是一个业余的程序员......我只熟悉OOP的基本水平

好吧,你不是唯一一个不理解的人,你不是唯一一个...这种风格--把不能塞进去的东西塞进一个宏观中--有其优点和缺点。就我注意到的情况而言,我的同事fxsaber 只显示了优势(灵活性、跨平台等)而事实上,你不能在调试器中检查这样的代码,那是什么?那么,这种风格的可读性是相当值得怀疑的。但是,正如他们所说,主人就是主人......。

 
Комбинатор:
在C++中,类和结构是一样的,只是一些默认值不同。

是的,你如何取一个指向结构的指针?

 
Vasiliy Sokolov:

所以你必须从正确的例子中学习。而在SB没有。以CObject为例--它不提供类型控制,不提供与对象有关的接口级工作,但它包含了像Save()和Load()这样毫无意义的方法,这些方法在实践中从未被重写。m_prev和m_next指针在一个CList类中 使用,但作为压舱石存在于其所有的子类中。最有用的是Comparer()方法。实际上,它最经常被推翻。但是在正常情况下,Comparer()是一个接口,最好不要在一个CObject中定义它,而是作为一个单独的类。

请解释一下控制的问题,我不明白。什么样的物体?一般来说,这应该是一个没有字段或方法的虚拟类。它的唯一目的是为其他类提供一个共同的祖先。开发商在其中塞满了垃圾,这是个大错误。

那里不应该有任何比较。它应该是一个哑巴类。

 
Alexey Volchanskiy:

解释一下控制问题,我不明白。用什么物体?它应该是一个没有字段或方法的假类。它的唯一目的是为其他类提供一个共同的祖先。开发商在其中塞满了垃圾,这是个大错误。

那里不应该有任何比较。它应该是一个哑巴类。

这不是SmallTalk,所有的实践(也包括理论)都表明,从亚当那里输出对象树是一种卑鄙的邪恶。而ST被允许这样做,他在他自己的果汁(他自己的虚拟机)中。

从热度来看,预计在3月8日之前会有一个尝试--抓捕--投掷的过程?:-)当然,这将是一个女人的节日,但不喝酒将是一种罪恶。

 
Maxim Kuznetsov:

这不是SmallTalk,所有的实践(也包括理论)都表明,从亚当那里得到对象树是一种残酷的邪恶。而ST是允许这样做的,他在自己的果汁(他的虚拟机)中。

我想我们可能会在3月8日之前期待尝试-抓取-投掷。:-)当然,这将是妇女节,但不喝酒将是一种罪过。


不,不会有假期,雷纳特说--没有例外。见https://www.mql5.com/ru/forum/168361 , 有人提出了这个问题。我自己也想知道,是否有针对前辈的计划或什么?答案是:唉,没有。

但在编译器中,我们有一个重要的复选框--检查除数)))))。等待3月8日前的 "检查阵列边界...... "复选框。然后我们会看到另外25页有类似的复选框。我们不知道如何进行摘录,是吗?

SZY: 看了一下C#中的基类Object,也是最小的。图片来自msdn


Почему в MQL5 нет исключений?
Почему в MQL5 нет исключений?
  • 2017.01.29
  • www.mql5.com
Не нужны, надо все условия руками проверять, по старинке оно надежнее Нужны, почему нет - не знаю А что это такое? Хочу посмотреть...
 
Dennis Kirichenko:

好吧,你不是唯一一个不理解的人,你不是唯一一个...这种风格--把你不能塞进宏的东西塞进去--有其优点和缺点。就我注意到的情况而言,我的同事fxsaber 只展示了优势(灵活性、跨平台等)而事实上, 你不能在Debugger中检查这样的代码,它是什么样的?那么,这种风格的可读性是相当值得怀疑的。但正如他们所说,主人是老板。

为什么要把一个具体的例子 归结为它不包含的东西?

马克西姆-德米特里耶夫斯基

有什么模型可以用来学习如何以完全相同的方式进行编程?:) 看起来非常好。

我是自学成才,这就是为什么我没有在任何地方遵循它。我有一个图波列夫的方法:"只有漂亮的飞机才能飞得好!"

 
Maxim Kuznetsov:

这不是SmallTalk,所有的实践(也包括理论)都表明,从亚当那里得到对象树是一种残酷的邪恶。而ST被允许这样做,他在自己的果汁(他自己的虚拟机)中。

从热度来看,我们预计到3月8日会有尝试--抓取--投掷 ?:-)当然,这将是一个女人的节日,但不喝酒是一种罪过。


空基类的意义在于,我们可以写这样的东西。我一开始就说,这个例子没有用,我是临时编的。重点是,我们可以把任何派生类 简化为CObject*。

CObject* objarr[12];

void OnStart()
{
    objarr[0] = new CAccountInfo;
    // еще что-то подобное, кладем в массив указатели на объекты абсолютно разных классов, но с одним предков
    objarr[11] = new CDealInfo;
    // обращаемся и работаем
    CAccountInfo * ai = (CAccountInfo*)objarr[0];
    //
    
    for(int n = 0; n < 12; n++)
        if(CheckPointer(objarr[n]) == POINTER_DYNAMIC)
            delete objarr[n];
       
}
 
Alexey Volchanskiy:

是的,你如何取一个指向结构的指针?

老实说,我不明白这个问题,但无论如何,它都和班级的情况一样
 
Комбинатор:
老实说,我不明白这个问题,但无论如何,它与班级的情况是一样的

非常抱歉,你是在哪种语言的背景下得出这个结论的?:-)



 
Комбинатор:
老实说,我不明白这个问题,但无论如何,它都和班级的情况一样

class C {};
struct S {};

void OnStart()
{
    C *_c = new C; // так можно
    S *_s = new S; // указатели на структуру не допускаются 
}