Fehler, Irrtümer, Fragen - Seite 2065

 
Komische Situation
class B;

class A
{
protected:  
  int i;

public:  
  void operator =( const B* Value )
  {    
    this.i = Value.i;       // 'i' - protected member access error
    
    // А так можно!
    this.i = ((A*)Value).i; // и нет ошибки: cannot convert from const pointer to nonconst pointer    
  }
};

class B : public A {};


Ich dachte, die Situation wäre in beiden Fällen die gleiche. Aber nein!

 
Das ist nur innerhalb der Klasse A möglich. Hört sich gut an für mich.
 

fxsaber:

Wie erkennt man den Namen einer Datei anhand ihres Handles?

Soweit ich mich erinnere, gibt es keine Möglichkeit
 
Комбинатор:
Sie können dies nur innerhalb der Klasse A tun. Das scheint mir in Ordnung zu sein.

Fehler

    this.i = Value.i;       // 'i' - protected member access error

wurde bereits behoben, bitte warten Sie auf den neuen Build.

 

ошибка

wurde bereits behoben, bitte warten Sie auf den neuen Build.

Sie wissen es am besten. Ein Fehler ist ein Fehler
 

MetaEditor fügt dem Dateinamen einen Punkt hinzu

Abfolge der Arbeitsschritte:

  • Erstellen Sie im Explorer ein Textdokument Test.txt
  • Öffnen Sie es in MetaEditor über Datei/Öffnen
  • Wählen Sie dann Datei/Speichern unter...


Infolgedessen lautet der Dateiname Test2..txt statt Test2.txt

Notepad fügt dem Dateinamen keine zusätzlichen Punkte hinzu, wenn alle anderen Dinge gleich sind.
 

fxsaber:

wurde bereits behoben, bitte warten Sie auf den neuen Build.

Wir müssen sehen, wie genau es behoben ist, weil in einem ähnlichen Fall der Microsoft-Compiler aus einem Grund verlangt, die Implementierung der Methode (in diesem Fall Operator =) außerhalb der Klasse zu nehmen

https://www.mql5.com/ru/forum/1111/page2001#comment_5679732

https://www.mql5.com/ru/forum/1111/page2001#comment_5680465

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.08.29
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

Dies scheint das falsche Verhalten für die Sprache zu sein, da es die Möglichkeiten einschränkt.

struct A {};

class B
{
public:
  const A a;
  
  B( const A &in ) : a(in) // 'a' - constructor not defined
  {
  }
};


Ich muss ein const-Feld als Struktur definieren. Ich dachte, der Kopieroperator würde funktionieren, aber der Compiler will stattdessen einen Konstruktor, weil die Syntax ähnlich ist. Aber das ist falsch.

 
Falsche Fehlermeldung
struct A
{
  const int i;
};

void OnStart()
{
  A a1, a2;
  
  a1 = a2; // '=' - not allowed for objects with protected members or inheritance
}
 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

fxsaber, 2017.05.19 22:35

TimeTradeServer kann allen möglichen Unsinn zurückgeben. Zum Beispiel ein Wert, der kleiner ist als TimeCurrent. Dies macht die praktische Anwendung völlig zunichte.

Wenn ich die Idee richtig verstehe, muss TimeTradeServer die verstrichene Zeit nach dem Empfang von TimeCurrent berechnen und diese Differenz addieren, sozusagen die zukünftigen TimeCurrent-Werte emulieren.

Nachdem Sie nun den Expert Advisor ausgeführt haben

#define  TOSTRING(A) #A + " = " + (string)(A) + "\n"

void OnInit()
{
  EventSetTimer(1);
}

void OnTimer()
{
  Comment(TOSTRING(TimeTradeServer()) + TOSTRING(TimeCurrent()));
}

können Sie jeden Unsinn erkennen.

Beachten Sie die Daten.


Auf diese Weise gibt TimeTradeServer die Ortszeit zurück. Bitte korrigieren Sie noch einmal das richtige Verhalten.