Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1098
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
Bitte sagen Sie mir, warum der Compiler im folgenden MQL4-Testskriptcode eine Warnung erzeugt:
Eine Warnung in Zeile 27 über eine Fehlanpassung des Datentyps. Beide Variablen haben denselben int-Typ. Nachfolgend sehen Sie einen Screenshot der Skriptkompilierung.
Wenn ich die Zeile 27 durch
wird die Warnung nicht angezeigt.
Was ist der Trick?
Es gibt keinen Trick. Die Variable t wird als double deklariert
In der Tat hat dieses t nirgendwo eine Bedeutung.
Und es gibt keinen Trick. Die Variable t wird als double deklariert
Vielen Dank, ich habe hart gearbeitet - es ist Zeit, sich auszuruhen.
In der Tat nimmt dieses t nirgendwo einen Wert an.
Es handelt sich um eine Puffervariable, in der das Ergebnis während der Sortierung vorübergehend gespeichert wird.
Wie unterscheiden sich diese Initialisierungsmethoden?
class Klas{}; Klas *Klas_ Klas Klas_
1. class Klas{}; 2. Klas *Klas_ 3. Klas Klas_
1. Typ (Klasse) Beschreibung
2. Deklaration des Typs (Klasse) Zeiger
3. Deklaration der Klasseninstanz - dies ist die Initialisierung, denn der Klas()-Konstruktor wird aufgerufen, wenn er nicht beschrieben ist, dann wird der Standardkonstruktor aufgerufen - Hilfe
Wie unterscheiden sich diese Initialisierungsmethoden?
d.h. Initialisierung nur Schritt 3.
1. Typ (Klasse) Beschreibung
2. Deklaration des Typs (Klasse) Zeiger
3. Deklaration der Klasseninstanz - dies ist die Initialisierung, denn der Klas()-Konstruktor wird aufgerufen, wenn er nicht beschrieben ist, dann wird der Standardkonstruktor aufgerufen - Hilfe
d.h. nur Klausel 3 wird initialisiert.
Ich habe in der Hilfe nicht gesehen, wie man sie initialisiert, vielleicht habe ich es nur gesehen und nicht verstanden, denn Klassen sind in der Hilfe schlecht beschrieben - ich habe sie 30 Mal gelesen.
Ja, in der Tat nach der Klasse, da ich keine Einträge habe, aber sie haben diesen Code in OnStart gesetzt
Verstehen Sie es, wie Sie wollen. Ich weiß nicht, warum ich es auf diese Weise erklären sollte.
Ich verstehe nicht, warum ich diesen Zeiger brauche.
Und wozu ist das gut? Was immer Sie wollen und was Sie denken, was es bedeutet.
Ich verstehe auch nicht, was das bedeutet.
CFoo foo40(foo1); // явный вызов конструктора копирования
Wozu das gut sein soll, ist ebenfalls nicht klar. Sie hätten es nicht hochgeladen, sondern die Idee ganz normal und einfach aufgeschrieben.Grüße.
Könnten Sie mir bitte sagen, wie die horizontalen Ebenen für das Gitter in mt4 und in mt5 berechnet werden?
Und warum über Zeiger initialisieren, ich habe es überhaupt nicht in der Hilfe gesehen, wie sie zu initialisieren, vielleicht habe ich geschaut und nicht verstanden, weil Klassen schlecht in der Hilfe beschrieben sind, lesen Sie 30 Mal.
ein Zeiger ist ein Zeiger, Initialisierung ist Initialisierung
diesen Code zuerst verstehen:
Was bedeutet Initialisierung in diesem Code und was ist eine Variablendeklaration?
Wann wird der Speicher zugewiesen?
und behandeln dann das Thema OOP und Zeiger auf eine Klasse und Zeiger auf ein Objekt mit diesem Wissen.
geh weg, aus irgendeinem Grund kann ich elementare Fragen nicht beantworten
ein Zeiger ist ein Zeiger, eine Initialisierung ist eine Initialisierung
diesen Code zuerst verstehen:
Was in diesem Code ist Initialisierung und was ist Variablendeklaration?
Wann wird der Speicher zugewiesen?
und dann dieses Wissen nutzen, um OOP und Zeiger auf eine Klasse und Zeiger auf ein Objekt zu diskutieren.
weg, aus irgendeinem Grund kann ich elementare Fragen nicht beantworten.
Hier ist ein einfaches und klares Beispiel. Die erste Variante ist die Deklaration der Variablen und die Speicherzuweisung (die Variable speichert standardmäßig einen beliebigen Wert oder eine Sektornummer oder eine Adresse in C++, die ich nicht kenne), die zweite Variante ist die Initialisierung.
Und wozu diese Hinweise auf den Typ dienen und womit man sie isst, hätte auch normal erklärt werden müssen.
Zeiger auf eine Klasse und Zeiger auf ein Objekt
Ich werde im Internet nachschlagen und sehen, ob es etwas darüber gibt.
Grüße.
Wie berechnet man horizontale Ebenen für ein Gitter in mt4 und in mt5?
Wenn Sie ein horizontales Niveau erkennen wollen, sollten Sie zuerst den maximalen offenen Preis bestimmen und dann einen Wert hinzufügen, um einen neuen Preis zu erhalten, der es Ihnen erlaubt, zu beobachten, wann der Preis diese Niveau-Bedingung durchbricht, und eine neue Order zu platzieren oder ein Raster von ausstehenden Orders zu platzieren, das die maximale Anzahl von Orders berücksichtigt und dann dieses Raster anzeigt
dort ist im Allgemeinen jeder kompakte Code leichter einzusehen und für Ihre eigenen Aufgaben zu ändern
Ich weiß nicht, ob Sie es ausprobiert haben, und ich habe noch nie viele Programme ausprobiert, und ich denke, dass es schwieriger ist, es in einem einfachen TS zu verwenden, aber vielleicht haben Sie es nie ausprobiert.
Hier ist ein einfaches und klares Beispiel. Die erste Option ist die Deklaration der Variablen und die Speicherzuweisung (die Variable speichert standardmäßig einen beliebigen Wert oder eine Sektornummer oder eine Adresse in C++, die ich hier nicht kenne), die zweite Option ist die Initialisierung.
Und warum diese Hinweise auf die Art und Weise, wie und womit man sie isst, hätten auch richtig erklärt werden müssen.DieSpeicherzuweisung erfolgt in Beispiel 1 und in Beispiel 2
Beispiel 2 ist eine Deklaration und Initialisierung, Beispiel 1 ist nur eine Deklaration
die Klasse ist die gleiche, die Klasse ist ein benutzerdefinierter Typ, der Felder (Eigenschaften) und Methoden für die Arbeit mit diesen Feldern enthält
ein Zeiger auf eine Klasse ist eine Deklaration, aber ohne Initialisierung und ohne Speicherzuweisung für den Typ (Klasse)
pointer = new MyClass(); - dies ist eine Deklaration und Initialisierung, die eine neue Instanz der Klasse erzeugt, und diese Instanz wird als Link zu einem Objekt zurückgegeben (nicht genau ein Link, in MQL ist es ... nicht wichtig, und so kommt man durcheinander)
....
Wenn Sie es nicht lesen wollen, können Sie zumindest diesen Beitrag von mir verwenden, um Ihr Beispiel zu ändern:
CFoo *pfoo6=new CFoo();
zu
CFoo *pfoo6; pfoo6 = new CFoo(); CFoo *pfoo_7 = pfoo6;
und versuchen Sie zu verstehen, was passiert - wenn Sie die letzte Zeile an..... zuweisen, aber trotzdem lesen, ist einfaches Fragen in Foren keine Option