Ein wichtiges Argument für die Einführung von * (das bisher noch nicht geäußert wurde) könnte das folgende sein:
class A { public:
virtualbooloperator==( A& ) { Print(__FUNCSIG__); returntrue; }
virtualbooloperator==( A* ) { Print(__FUNCSIG__); returntrue; }
};
void today( A *a, A *b )
{
a == b; //сравниваются указатели на равенство
a.operator==( b ); //вызывается a.operator( A* )//нет синтаксиса вызова a.operator( A& )
}
daher kann man a.operator( A& ) nicht einmal explizit aufrufen , was von Bedeutung ist
In diesem Fall wird die Einführung von * zusammen mit der Ausgliederung des Zeigervergleichs in eine separate Funktion (vielleicht eine Systemfunktion) alle bestehenden Unklarheiten beseitigen
void future( A *a, A *b )
{
a == b; //вызывается a.operator( A* )
a == *b; //вызывается a.operator( A& )
::IsEqualPointer( a, b ); //сравниваются указатели на равенство
}
Wenn es optimal war, wird es ideal werden!
Wir haben die Operatoren *(Dereferenz/Inderektion) und &(Address-of) hinzugefügt, wir werden keine weiteren Änderungen an der Sprache vornehmen.
A *a,*b;
a== b; // сравнение "указателей"
*a== b; // вызов оператора ==(A *)
a==*b; // вызов оператора ==(A &)// для операции != аналогично
// операция & - эквивалент(короткая запись) вызову GetPointer
Ich würde gerne wissen, wie es mit der Einführung von Eigentum (als Klassenmitglied) aussieht. Ich habe diese Frage kürzlich gestellt, aber es gab keine Kommentare von den Entwicklern. Ist es geplant, oder soll ich eine Umfrage im Forum machen, ob diese Funktion benötigt wird?
Alexey Navoykov: Ich würde gerne wissen, wie es mit der Einführung von Eigentum (als Klassenmitglied) aussieht. Ich habe diese Frage kürzlich gestellt, aber es gab keine Kommentare von den Entwicklern. Ist dies geplant, oder soll ich eine Umfrage im Forum machen, ob diese Funktion benötigt wird?
Ein weiteres Problem: Wenn wir versuchen, etwas wie dieses zu implementieren
a.b().c().d();
dann erscheint nach dem ersten Klammerpaar nicht mehr die automatische Ersetzungsliste mit den Namen der Klassenmitglieder, und der gesamte weitere Text muss vollständig manuell/blind eingegeben werden.
Alexey Navoykov: Wenn man versucht, so etwas zu implementieren, gibt es ein weiteres Problem:
dann erscheint nach dem ersten Klammerpaar nicht mehr die automatische Ersetzungsliste mit den Namen der Klassenmitglieder, und der gesamte weitere Text muss vollständig manuell/blind eingegeben werden.
Es wäre schön, dem Debugger einen Hinweis auf den Typ der verwendeten Variablen hinzuzufügen, wie in allen fortgeschrittenen IDEs
Die zu prüfende Datei kann ein Unterverzeichnis sein. In diesem Fall gibt FileIsExist() false zurück, und der Fehler 5018 wird in die Variable _LastError geschrieben - "Dies ist keine Datei, sondern ein Verzeichnis". (siehe Beispiel für die Funktion FileFindFirst).
5018 funktioniert nicht in Unterordnern/Unterverzeichnissen
Die Frage ist: Ist Arbitrage im Devisenhandel möglich?
daher kann man a.operator( A& ) nicht einmal explizit aufrufen , was von Bedeutung ist
In diesem Fall wird die Einführung von * zusammen mit der Ausgliederung des Zeigervergleichs in eine separate Funktion (vielleicht eine Systemfunktion) alle bestehenden Unklarheiten beseitigen Wenn es optimal war, wird es ideal werden!Wir haben die Operatoren *(Dereferenz/Inderektion) und &(Address-of) hinzugefügt, wir werden keine weiteren Änderungen an der Sprache vornehmen.
Operatoren *(Dereferenzierung/Inderektion) und &(Adresse-von) hinzugefügt
Hinzufügen der Operatoren *(Dereferenzierung/Inderektion) und &(Adresse-von), keine weiteren Änderungen in der Sprache werden vorgenommen/geplant
ist dies nur in MQL5 oder wurde es auch in MQL4 hinzugefügt?
Ich würde gerne wissen, wie es mit der Einführung von Eigentum (als Klassenmitglied) aussieht. Ich habe diese Frage kürzlich gestellt, aber es gab keine Kommentare von den Entwicklern. Ist dies geplant, oder soll ich eine Umfrage im Forum machen, ob diese Funktion benötigt wird?
dann erscheint nach dem ersten Klammerpaar nicht mehr die automatische Ersetzungsliste mit den Namen der Klassenmitglieder, und der gesamte weitere Text muss vollständig manuell/blind eingegeben werden.
Wenn man versucht, so etwas zu implementieren, gibt es ein weiteres Problem:
dann erscheint nach dem ersten Klammerpaar nicht mehr die automatische Ersetzungsliste mit den Namen der Klassenmitglieder, und der gesamte weitere Text muss vollständig manuell/blind eingegeben werden.
boolFileIsExist(
const stringfile_name,//Dateiname
intcommon_flag=0// Suchbereich
);
Die zu prüfende Datei kann ein Unterverzeichnis sein. In diesem Fall gibt FileIsExist() false zurück, und der Fehler 5018 wird in die Variable _LastError geschrieben - "Dies ist keine Datei, sondern ein Verzeichnis". (siehe Beispiel für die Funktion FileFindFirst).
5018 funktioniert nicht in Unterordnern/Unterverzeichnissen
Wenn zum Beispiel
und das Beispiel https://www.mql5.com/ru/docs/files/filefindfirst würde lauten
würde das Ergebnis lauten
und es sollte 1 sein: Verzeichnis = Dir2\.