![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Über welche Paternas können wir reden, wenn du die Grundlagen nicht kennst, du könntest nicht einmal ein statisches Klassenfeld korrekt erstellen.
(es gibt eine Menge Artikel über Singleton auf Hobber, wozu es dient, wie man es einsetzt und was daran falsch ist).
Singleton oder eine statische Klasse?Verwendung des Singleton-Musters
(es gibt viele Artikel auf der Hubra über Singleton und wofür es ist, und wie, und was falsch ist mit ihm)
Singleton oder statische Klasse?Singleton-Muster verwenden.
Glauben Sie, dass ich das noch nicht erlebt habe? Ich habe noch nicht ganz herausgefunden, wie das funktioniert. Die Sache ist die. Aber wie sich herausstellt, brauche ich kein Singleton. Ich werde mich also mit statischen Mitgliedern begnügen.
Wie können wir über Paternalien sprechen, wenn Sie die Grundlagen nicht kennen, Sie könnten nicht einmal ein statisches Klassenfeld korrekt erstellen.
Wenn Sie wissen, wie, können Sie es korrigieren. Gestern habe ich gemäß der Dokumentation geschrieben. Aber es gibt auch eine Menge Fehler. Zum Beispiel so:
Was kommt als Nächstes?
Ich habe den falschen abgeworfen. Auf jeden Fall ist die aktuelle Version hier korrekt:
Ich schätze, dass ich jetzt jede statische Variable mit einem so langen Namen bezeichnen muss?
Symbol_Properties::gd_Spread = 0;
Oder ist es einfacher, es so zu implementieren, dass nach der Beschreibung der Variableninitialisierungsstruktur, wenn sie initialisiert wird, das entsprechende statische Mitglied einer Variablen vom Typ zugewiesen werden sollte:
Und im Code wird dann über diese Variable auf die entsprechenden statischen Variablen verwiesen, richtig?
Ja, nun... Die Hauptsache ist, dassVadim Bescheid weiß :)))))
Ja, das ist die normale Art von Dialog:
F: Meine Freunde haben mir ein paar Süßigkeiten empfohlen. Das ist genau das, was ich brauche!
Ich: (Verblüfft... Was hat das mit Süßigkeiten zu tun? Vielleicht geht B zu einer Geburtstagsfeier eines Freundes oder möchte die Kinder einladen, vielleicht seine eigenen oder die von jemand anderem? Vielleicht hat er sich selbstständig gemacht und verkauft jetzt Süßigkeiten. Vielleicht war es die letzte Süßigkeit in Weißrussland, und B ist jetzt ein Monopolist. Was ist, wenn B Süßigkeiten vermisst? Viele andere Gedanken gingen mir zum Thema "Warum Süßigkeiten und was man damit machen kann" durch den Kopf. Wie schon bei B versagten meine telepathischen Fähigkeiten wieder einmal. Es fiel mir nichts ein).
Keinen Schimmer.
1. Wozu ist das alles gut?
2. Es gibt zwei Möglichkeiten, auf die statischen Felder einer Klasse zuzugreifen (die Struktur ist standardmäßig und durch Vererbung eine Klasse mit öffentlichem Zugriff):
(a) Über den Klassennamensraum - z. B.Symbol_Properties::gd_Spread
(double Spread = Symbol_Properties::gd_Spread) - derSpread-Wert wird gleichgd_Spread aus der KlasseSymbol_Properties
(double Spread = Symbol_Properties::gd_Spread =0) Wert vongd_Spread aus derKlasse Symbol_Properties undSpread-Wert wird gleich 0
b) ein Objekt der Klasse (z. B.Symbol_Properties obj; ) erstellen und über dieses Objekt auf ein gewöhnliches Feld der Klasse verweisen
(double Spread = obj.gd_Spread)
(double Spread = obj.gd_Spread =0)
1. Wozu ist das alles gut?
Die Bequemlichkeit... Denn wenn diese Variablen nur in einer einzigen Instanz verwendet werden, warum sollte ich dann ein Objekt erstellen? Außerdem ist es viel bequemer , Code zu lesen, wenn auf eine Variable verwiesen wird, wenn VARIABLE.VARIABLE NAME.
2. Es gibt zwei Möglichkeiten, auf die statischen Felder einer Klasse zuzugreifen (Struktur ist eine Klasse mit standardmäßig öffentlichem Zugriff und Vererbung)
(a) über den Klassennamensraum - z. B.Symbol_Properties::gd_Spread
(double Spread = Symbol_Properties::gd_Spread) - derSpread-Wert wird gleichgd_Spread aus der KlasseSymbol_Properties
(double Spread = Symbol_Properties::gd_Spread =0)- dergd_Spread-Wert aus der KlasseSymbol_Properties und derSpread-Wert wird gleich 0
Ganz genau! Deshalb habe ich es auf diese Weise gemacht. Ich initialisiere die Variable, die sich auf die Variable dieser Struktur bezieht, sofort mit Null und dann wird sie dauerhaft im Speicher abgelegt. Das ist logisch, denn diese Variablen werden nur in einem einzigen Fall benötigt. Deshalb gibt es in diesem Fall keinen Grund, ein anderes Objekt zu erstellen. Schließlich ist es ja logisch... Stimmen Sie mir da nicht zu?
b) Erstellen Sie ein Klassenobjekt (z. B.Symbol_Properties obj; ) und verweisen Sie über dieses Objekt auf das Feld als normales Klassenfeld.
STATE VARIABLE hat mir nicht gefallen, weil sie in verschiedenen Klassen verwendet werden. Also habe ich sie in Gruppen zusammengefasst.
Konstanten sind nicht beliebt, weil Konstanten ihre Werte nicht ändern, während diese Variablen ihre Werte ändern können sollten.