Compilerfehler mit Template-Parameter = void* - Seite 20

 
pavlick_:

Knopfleuchte durch g mit Virtualität:

abgedroschene Beispiele.

Dies ist weder ein Beispiel für Polymorphismus noch ein Beispiel für ein Muster. Es ist nur ein Beispiel für die Verwendung einer bool-Variablen und sonst nichts (abgesehen von einer dicken Schicht von Huskies).

Templates können Polymorphismus auf keinen Fall ersetzen.

 
Dmitry Fedoseev:

Templates können Polymorphismus in keiner Weise ersetzen.

Wo habe ich etwas anderes behauptet? Der Punkt ist, dass der Polymorphismus versucht, Vorlagen zu ersetzen.

 
pavlick_:

Und wo habe ich etwas anderes behauptet? Der Punkt ist, dass der Polymorphismus versucht, Vorlagen zu ersetzen.

Es ist eher so, dass Sie versuchen, den normalen OOP-Ansatz durch eine Krücke zu ersetzen.) Vorlagen werden eigentlich nur für gespeicherte Daten und in einigen Schnittstellen wie IComparable<T> benötigt.

Sie haben praktisch keinen Leistungsvorteil. In Ihrem zweiten Beispiel fügt der Compiler alles ein, weil dort alles eindeutig ist.

 
Alexey Navoykov:

Es ist eher so, dass Sie versuchen, den normalen OOP-Ansatz durch eine Krücke zu ersetzen.) Vorlagen werden eigentlich nur für gespeicherte Daten und in einigen Schnittstellen wie IComparable<T> benötigt.

Sie haben praktisch keinen Leistungsvorteil. In Ihrem zweiten Beispiel blendet der Compiler alles ein, weil dort alles eindeutig ist.

Das ist nicht mein Beispiel, sondern ein klassisches Beispiel für die Umkehrung von Abhängigkeiten. Und machen Sie sich nicht über seine Einfachheit lustig, es demonstriert nur eine Idee. Wenn ich ein Blatt Code schreiben würde, würden Sie sagen: "Nun ja, das ist etwas anderes"?

Schablonen sind zu einer Krücke geworden, ja. . Na gut, ich mache Schluss für heute.

 
Übrigens, zurück zu void*, ich habe gerade festgestellt, dass sogar dynamic_cast nicht funktioniert (nicht kompiliert) mit ihm in C++, was logisch ist, weil wir nur einen unpersönlichen Zeiger auf einen Speicherbereich haben. Deshalb kann sie nur explizit geworfen werden. Dementsprechend müssen wir sicher wissen, welcher Typ dort liegt. Deshalb ist void* allein in C++ nutzlos. In MQL ist alles anders. Aber aus Kompatibilitätsgründen sollten wir die Verwendung von dynamic_cast und delete mit Zeigern vom Typ void* vermeiden
Grund der Beschwerde: