OOP, Vorlagen und Makros in mql5, Feinheiten und Anwendungen - Seite 20

 
Wie kann ich die Begrenzung der Anzahl der Makroargumente auf 8 Elemente aufheben, wenn mir 8 Elemente fehlen?
 
Seric29:
Wie kann ich die Begrenzung der Anzahl der Makroargumente auf 8 Elemente aufheben, wenn mir 8 Elemente fehlen?

Ein Makro in einem Makro sollte geschrieben werden.

Warum nicht einfach Funktionen schreiben?

 

Gibt es eine Möglichkeit, den Modifikator const mit einem Makro zu entfernen/zu löschen und bei Bedarf zu deaktivieren?

ZS: Es gibt einen Code:

class COrder {
private:
//--- const to send order
   const int         c_cmd;
   const double      c_volume;
   double            c_price;
   const int         c_magic;
   const int         c_stoploss;
   const int         c_takeprofit;
}

beschlossen, die Felder einer Klasse in eine Datei zu schreiben und über den Konstruktor aus einer Datei wiederherzustellen, aber der Modifikator const wird dies behindern

der Code ist fast fertig, theoretisch kann ich alle Konst. löschen, aber... Aber ich möchte keine Gelegenheit für weitere Änderungen verlieren, und const ist sehr hilfreich bei Codeänderungen

 
Igor Makanu:

Ist es möglich, ein Makro zu verwenden, um den Const-Modifikator zu entfernen/löschen und ihn bei Bedarf zu deaktivieren?

#define const
 
fxsaber:

Hmm, so einfach?!

Wie grenze ich den Abschnitt des Quellcodes ein, auf den ich das Makro anwenden möchte?

 
Igor Makanu:

Wie grenze ich den Bereich des Quellcodes ein, auf den ich dieses Makro anwenden möchte?

#undef const
 
Igor Makanu:

Gibt es eine Möglichkeit, den Const-Modifikator mit einem Makro zu entfernen/zu löschen und bei Bedarf zu deaktivieren?

ZS: Es gibt einen Code:

beschlossen, die Felder einer Klasse in eine Datei zu schreiben und über den Konstruktor aus einer Datei wiederherzustellen, aber der Modifikator const wird dies behindern

der Code ist fast fertig, theoretisch kann ich alle Konst. löschen, aber... Aber ich möchte keine Gelegenheit für weitere Änderungen verlieren, und const ist sehr hilfreich bei Codeänderungen

Worum geht es dabei? Überall dort, wo c_cmd eine Konstante ist und eine Funktion keine Konstante ist? Wenn ja, dann ist es UB (ja, μl wird das nicht zulassen), auch wegen der Read-Only-Segmente, Compiler-Optimierungen ...

 
fxsaber:

Hmm, wieder einfach.

DANKESCHÖN!

Sieg:

Worum geht es dabei? Ist c_cmd überall eine Konstante und eine Funktion ist keine Konstante? Wenn ja, dann ist es UB (ja, μl wird das nicht zulassen), auch wegen der Read-Only-Segmente, Compiler-Optimierungen ...

Ich habe mich entschieden, alle Felder von 2 Klassen mit allen Einstellungen und aktuellen Zuständen zu speichern, wenn eine neue Bestellung aufgegeben wird (TS mit mehreren Bestellungen).


Ich habe beschlossen, eine separate Struktur mit Feldern durch Feldnamen von Klassen zu speichern - ich werde nur die Struktur in 2 Minuten im Editor kopieren))), und es ist bequem, die Felder mit einem einzigen Aufruf von FileWriteStruct() zu speichern

und um den Zustand wiederherzustellen, werde ich zum Beispiel diesen Konstruktor verwenden:

COrder::COrder(SRecovery &property)
:  c_cmd(property.c_cmd),
   c_volume(property.c_volume),
   c_price(property.c_price),
   c_magic(property.c_magic),
   c_stoploss(property.c_stoploss),
   c_takeprofit(property.c_takeprofit)
{

}

wenn dieser Konstruktor aufgerufen wird, können konstante Felder initialisiert werden

die Wiederherstellung der Daten ist nur zum Neuladen des Terminals erforderlich

Ich habe es noch nicht getan, aber 99% sicher, dass es ohne Probleme funktionieren wird - ich wollte nicht einen neuen Datentyp (Speicherstruktur) einführen - aber es wird einfacher sein und ich kann den Code später lesen....Kommentare sind nicht unsere zu schreiben - ))))

 
Igor Makanu:

Hmm, wieder einfach.

DANKESCHÖN!

Ich habe mich entschieden, alle Felder von 2 Klassen mit allen Einstellungen und aktuellen Zuständen zu speichern, wenn eine neue Bestellung aufgegeben wird (TS mit mehreren Bestellungen).


Ich habe beschlossen, eine separate Struktur mit Feldern durch Feldnamen von Klassen zu speichern - ich werde nur die Struktur in 2 Minuten im Editor kopieren))), und es ist bequem, die Felder mit einem einzigen Aufruf von FileWriteStruct() zu speichern

und um den Zustand wiederherzustellen, werde ich zum Beispiel diesen Konstruktor verwenden:

in diesem Konstruktoraufruf können konstante Felder initialisiert werden

die Wiederherstellung der Daten ist nur zum Neuladen des Terminals erforderlich

Ich habe es noch nicht gemacht, aber ich bin mir zu 99% sicher, dass es ohne Probleme funktionieren wird - ich wollte keinen neuen Datentyp (Speicherstruktur) einführen - aber es wird einfacher sein und ich kann den Code später lesen....Kommentare sind nicht von uns zu schreiben - ))))

Wenn Sie keine temporäre Struktur zum Schreiben erstellen möchten, versuchen Sie, die Felder einzeln in die Datei zu schreiben und sie dann auf dieselbe Weise aus dem Konstruktor zu lesen. Es ist nicht unbedingt schneller, aber der Code wird definitiv "hässlicher" aussehen.
 
fxsaber:
Falsch. Sie braucht ein const_cast-Gegenstück, das sie nicht hat.