模板参数=void*的编译器错误 - 页 18

 
Igor Makanu:

目前,我想用一种简单的方法将VS表格附加到.dll上,以达到MT5的目的 ))))- 我想把按钮点击处理程序包装在一个类中,通过遍历处理程序函数的指针数组来调用它们,我想在EA主代码中可以写出与VS中相同的函数名称,即button2_Click() ....button2_Click()

SZY: 这是一个EOP 问题))))

无意冒犯,但这让我想起了很多。


1
 
Ilya Malev:

- 在动态OOP中创建自动结构是无稽之谈

所以堆栈对象:myclass obj;是无稽之谈?那么我就是一个盘口高手 :)

 
pavlick_:

所以,堆栈对象:myclass obj;是无稽之谈?所以,我是一个手工艺人 :)

有各种各样的任务。你可以练习修辞很长一段时间,如果你不描述具体的任务,你可以想出任何东西......

是的,"可堆叠"(自动你的意思?)对象基本上是无稽之谈。以我的拙见,这绝不是真理,当然也不是最后的例子......
 
一个小丑需要一个不执行OOP主要功能的对象--多态性 属性?你不会将任何具有不同属性的对象根据内容分配给这样一个变量。你根本无法将另一个对象映射到列表中的这个 "变量"。你为什么需要对象呢? 用结构来代替不是更好吗?也许是因为µl结构不能返回对自己的引用...并与他们一起开始了一个黑暗的东西,不断地创造-毁灭-自我复制等等。
 
Ilya Malev:
你想要一个不满足OOP主要功能的对象--多态性 属性?你不会将任何具有不同属性的对象根据内容分配给这样一个变量。你根本无法将另一个对象映射到列表中的这个 "变量"。你为什么需要对象呢? 用结构来代替不是更好吗?也许是因为µl结构不能返回对自己的引用...并与他们一起开始了一个黑暗的东西,不断地创造-毁灭-自我复制等等。

如何在没有多态性的情况下生活...如果我告诉你,在>90%的情况下我们可以不使用多态性呢?就拿 "SOLID依赖性反转原则 "来说,如果我们是体面的职业经理人,我们应该创建抽象,到处都是虚拟方法(当然,这需要高额的开销)。C#高手会这样写:https://pro-prof.com/forums/topic/dependency-inversion-principle。 或者我们可以采用模板,写一些类似的东西。

class Lamp {
public:
    void activate();
    void deactivate();
};
template <typename T>
class Button {
    Button(T& switchable)
        : _switchable(&switchable) {
    }
    void toggle() {
        if (_buttonIsInOnPosition) {
            _switchable->deactivate();
            _buttonIsInOnPosition = false;
        } else {
            _switchable->activate();
            _buttonIsInOnPosition = true;
        }     
    }
private:
   bool _buttonIsInOnPosition{false};
   T* _switchable; 
}
int main() {
   Lamp l;
   Button<Lamp> b(l)

   b.toggle();
}


按钮也是独立于细节的,没有所有的多态性和接口。多态性有它自己的利基,但它比他们说的要窄得多。

ZS:嗯,没有人禁止它。

derived1 obj1;
baseclass *p1 = &obj1;
derived2 obj2;
baseclass *p2 = &obj2;
pass_through_generalized_algoritm(p1);
pass_through_generalized_algoritm(p2);
 
当然,我们可以不使用多态性,但在这种情况下,使用简单的结构 而不是对象要诚实和合理得多,否则我们就是用显微镜来钉。更准确地说,在µl5的情况下,我们宁可绕过不允许完全使用非对象结构的 "实现特性"(与对象不同,不可能向它们传递指针)。这完全是一个不同的问题,它不再是OOP,而只是OO。
 
pavlick_:

ZS:嗯,没有人禁止它。

没有人禁止各种各样的拐杖和示意图,但为什么?例如:当你的自动物体在你最不期望的时候突然自毁,这将会很有趣,不是吗?

 
OOP的意义不在于使用你选择的方法来按下按钮,你一样可以通过模板或函数指针来实现,而只是对系统的任何对象应用方法,如列表,允许自我组织成列表结构,并在适当的时候创建任意的选择,不需要任何像CArrayObj 等的拐杖和相关的麻烦,重载选择、查询、比较、排序等方法。(甚至是克隆/复制,当每个对象可以在没有你的参与下 决定它是否要被复制到列表/数组中,如果要复制,那么如何复制)。
 
Ilya Malev:

没有人禁止编造拐杖和示意图,但为什么?例如:当你的自动对象在你最不期望的时候突然毁掉自己,这将是很有趣的,不是吗?

因为堆栈对象要比堆(内存分配)中的对象快得多。自我毁灭?- 这是新的东西:)。但有时当然是必要的--例如,对象的数量只有在运行时才知道。

ZS:否则你可能会更舒服,这是个人问题。

 
Ilya Malev:
OOP的意义不在于使用你所选择的方法来按下按钮,你一样可以通过模板或函数指针来实现,而只是对系统的任何对象应用列表等方法,这些方法允许自我组织成列表结构,并在适当的时候创建任意的选择,而不需要像CArrayObj等任何拐杖和相关的麻烦,重载选择、查询、比较、排序等方法。(甚至是克隆/复制,当每个对象可以在没有你的参与 下决定是否将其复制到列表/数组中,以及如果要复制,如何复制)。

我写道--多态性 有自己的利基,我没有争论。但实践表明(至少是我个人),这并不那么重要。我更倾向于用模板来解决问题。