Fehler, Irrtümer, Fragen - Seite 3062

 

An dieser Stelle sollte der Compiler einen Fehler melden:

class A
  {
public:
   int               aa;
  };
A a;

void OnStart()
  {
   a.aa=999999;
   A b=GetPointer(a);//Переменная b не является указателем
   Print(b.aa);
  }

Das Skript druckt Neunen.

 
Aliaksandr Hryshyn:

An dieser Stelle sollte der Compiler einen Fehler melden:

Die Schrift druckt Neunen.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Neue Version von MetaTrader 5 build 2980: Push-Benachrichtigungen bei Handelsvorgängen

A100, 2021.06.21 08:35

In MQL sind Zeiger eigentlich keine Zeiger (keine Adressarithmetik), sondern Referenzen

Und wenn ja, funktioniert die implizite Umwandlungeines Referenzzeigers in ein Objekt

In C++ würde es wie folgt aussehen


#ifdef __cplusplus
#define GetPointer(a)   ((A&)(a))
void OnStart()
{
   a.aa=999999;
   A b = GetPointer(b);
   Print(b.aa);
}
#endif
 
A100 :

Und da dies der Fall ist, funktioniert eine implizite Zeiger-zu-Objekt-Umwandlung

In C++ würde das folgendermaßen aussehen:

Da Sie sich sehr gut mit OOP auskennen. Darf ich Sie um Ihre Meinung zu diesem Thema bitten?

Bug: Const method + Copy constructor
Bug: Const method + Copy constructor
  • 2021.07.18
  • www.mql5.com
This code reproduces the bug: There are 2 workarounds for this code, you either remove the const qualifier from the method foo or create a temporar...
 
fxsaber:

Auf dem entfernten Rechner trat dies erst nach einiger Zeit auf. Davor funktionierte alles einwandfrei. Ich kann mich nicht erinnern, irgendetwas am Betriebssystem geändert zu haben.

Ich erinnere mich an etwas Ähnliches. Wahrscheinlich hat das etwas mit der RDP-Verbindung zu tun.

Und das Umschalten zwischen den Fenstern mit Alt+Tab schien zu helfen.

 
Andrey Khatimlianskii:

Ich erinnere mich an etwas Ähnliches. Wahrscheinlich hat das etwas mit der RDP-Verbindung zu tun.

Und es schien zu helfen , mit Alt+Tab zwischen den Fenstern zu wechseln.

Leider hat das nicht geholfen. Bis ich Alert schließe, ist das Terminal immer noch nicht sichtbar.

 
Alain Verleyen:

Da Sie sich sehr gut mit OOP auskennen. Darf ich Sie nach Ihrer Meinung dazu fragen?

In C++ kompiliert alles ohne Fehler, in MQL ohne const (3) - es kompiliert auch - es bedeutet, dass irgendwo in MQL es einen Fehler gibt.

class C {
public:
    C()           { Print( 1 ); }  
    C( const C& ) { Print( 2 ); }
    C h()         { Print( 3 ); return C(); }    //(3) нормально
    C f() const   { Print( 4 ); return C(); }    //(4) ошибка при компиляции
    C g() const   { Print( 5 ); C c; return c; } //(5) замена (4)
};
void OnStart()
{
    C c;
    c.f();
}

Andererseits - selbst wenn (4) kompiliert würde, wäre die Reihenfolge der Aufrufe immer noch anders:

in MQL: 1-4-1-2

in C++: 1-4-1

daher ist es in jedem Fall korrekter, die Variante (5) zu verwenden

 
A100 :

In C++ kompiliert alles ohne Fehler, in MQL ohne const (3) - kompiliert auch - es bedeutet, dass irgendwo in MQL gibt es einen Fehler

Aber selbst wenn (4) kompiliert werden könnte, wäre die Reihenfolge der Aufrufe eine andere:

in MQL: 1-4-1-2

in C++: 1-4-1

daher ist es in jedem Fall korrekter, die Variante (5) zu verwenden

Vielen Dank :-)
 

Verflixt, ich habe es immer noch nicht verstanden, also sagt es mir, liebe Leute:

Was muss ich tun, um zu verhindern, dass alle in Metaeditor geöffneten Dateien im richtigen Moment abstürzen?

Metaeditor.ini manuell gesichert oder was? ernsthaft.

Nur, dass nicht einmal nach dem Schließen/Öffnen, sondern direkt im Freien auf einmal alles weg ist. Der Grund dafür ist unklar.

 
Aleksey Mavrin:

Verdammt, ich verstehe es immer noch nicht, also sagt es mir, Leute des guten Willens:

Was muss ich tun, um zu verhindern, dass alle in Metaeditor geöffneten Dateien im richtigen Moment abstürzen?

Metaeditor.ini manuell gesichert oder was? ernsthaft.

Nur, dass nicht einmal nach dem Schließen/Öffnen, sondern direkt im Freien auf einmal alles weg ist. Der Grund dafür ist unklar.

Ich drehe nicht, ich benutze es als tragbare Version.
 

Es gibt einen Kunden. Ich habe seine Arbeit getan. Er wollte wieder mit mir arbeiten. Einen Auftrag erstellt. Er konnte es nicht herausfinden oder er hat einen Schritt übersehen, bei dem er eine Spezifikation anhängen muss.

Der Auftrag wurde gelöscht. Nach den Vorschriften können Sie nur eine Stelle schaffen. Kann nicht erstellen, möchte ein anderes Konto erstellen. (Ich habe ihm davon abgeraten und geschrieben, dass ich versuchen werde, mich zur Unterstützung zu melden).

Er bot mir an, nicht im Voraus zu zahlen, was ich ablehnte. Weil es dem Dritten (MKL) gegenüber nicht fair ist.

Bitte geben Sie ihm die Möglichkeit, hier einen Arbeitsplatz zu schaffen.

Irgendwie ist das nicht richtig. Es gibt eine Person, die bereit ist, für die Arbeit zu bezahlen, und es gibt einen Künstler, der sich bereit erklärt, sie auszuführen und eine Provision zu zahlen. Der Prozess wird angehalten.

https://www.mql5.com/en/users/mbende/feedbacks