Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 124
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich weiß nicht, ob es hier gepostet wurde oder nicht, aber es könnte für jemanden nützlich sein. Wenn Sie eine Methode einer parametrisierten Klasse nur danach überladen wollen, ob sie ein Argument des gleichen Typs als Wert oder als Referenz annimmt (Strukturen werden nur als Referenz übergeben, einfache Typen meist als Wert). Dies kann auf folgende Weise geschehen (und die zweite Methode gilt genau für Varianten ohne &, da sonst die grundlegende Typisierung durch Strukturen nicht kompiliert werden kann)
Diskussion hier.
Ich weiß nicht mehr, ob es hier gepostet wurde oder nicht, aber es könnte für jemanden nützlich sein. Wenn Sie eine Methode einer parametrisierten Klasse nur per Wert oder nur per Referenz überladen wollen (Strukturen werden nur per Referenz übergeben, einfache Typen meist per Wert). Dies kann auf diese Weise geschehen (außerdem muss die zweite Vorlage genau für die Variante ohne & gelten, da sonst die grundlegende Typisierung nach Strukturen nicht kompiliert werden kann)
Dann stellt sich heraus, dass eine Klasse, die für einen Strukturtyp entwickelt wurde, alle Arten von numerischen Typen akzeptieren kann. Und was soll man mit ihnen machen?
Dann stellt sich heraus, dass eine Klasse, die für einen Strukturtyp entwickelt wurde, alle Arten von numerischen Typen akzeptieren kann. Und was soll man mit ihnen machen?
In diesem Fall ist die Klasse für gemischte Typen gedacht - sowohl für Strukturen als auch für einfache Typen, ansonsten ist dieses Konstrukt sinnlos. Um zu vermeiden, dass unnötige Typen in F verwendet werden, können Sie dort eine Prüfung auf typename(F), sizeof(F) usw. durchführen.
In diesem Fall ist class für gemischte Typen gedacht - sowohl für Strukturen als auch für einfache Typen, sonst macht diese Konstruktion keinen Sinn. Um keine unnötigen Typen in F zu akzeptieren, kann man dort eine Prüfung auf typename(F), sizeof(F), etc. schreiben.
Der Typname schützt nicht davor, unnötige Typen zu akzeptieren. Dazu müssen Sie eine überladene private Methode mit einem geeigneten Typ erstellen.
Und wenn die Klasse für einen beliebigen Typ bestimmt ist, warum sollte sie dann mit einem Vorlagenparameter parametrisiert werden, was zu Verwirrung führt? Allerdings gibt es auch einfachere Varianten für Krücken, ohne Vorlagenklassen.
Wenn eine Klasse von beliebigem Typ sein soll, warum sollte sie dann mit einem Template-Parameter parametrisiert werden, was zu Verwirrung führt?
Wie nimmt man also den richtigen Typ, der ein beliebiger Typ sein kann, ohne die Parametrisierung festzulegen? Sie können einen Parameter oder ein Feld nicht deklarieren, ohne einen Typ anzugeben. Es könnte zum Beispiel eine "Wrapper"-Klasse für einen beliebigen Datentyp sein.
typename schützt nicht vor dem Akzeptieren unnötiger Typen )
Wenn Sie typename(F)==typename(T) schreiben, wird es geschützt.
Wie können Sie also den richtigen Typ akzeptieren, der alles sein kann, ohne die Parametrisierung zu übergeben? Sie können einen Parameter oder ein Feld nicht deklarieren, ohne einen Typ anzugeben. Sie kann zum Beispiel eine "Wrapper"-Klasse für einen beliebigen Datentyp sein.
Warum sollte man ein Muster deklarieren, wenn sein Parameter in keiner Weise mit dem Verhalten der Klasse in Verbindung steht?
Wenn Sie typename(F)==typename(T) schreiben, wird es geschützt.
Das ist wirklich eine grausame Sache. Sie müssen das Typename-Kontrollmittel in die Laufzeitphase übertragen. Ihre Codes werden jahrelang debuggt werden müssen
Können Sie mir sagen, wo ich einen regulären Trailing Stop für einen Fünfer finden kann?
iSAR iOsMA EA-Nachlaufend
iSAR iOsMA EA-Nachlaufend
Ich danke Ihnen!