Fehler, Irrtümer, Fragen - Seite 1974

 

Kompilierungsfehler

class B {};
class A {
template<typename T> void f() const {} //1
template<typename T> void f()       {} //2
        void g() const { f<B>(); } //error: 'f<B>' - call non-const method for constant object
};
Und wenn Sie die Zeilen (1) und (2) vertauschen, ist es in Ordnung. Was ist der Unterschied?
 

Fehler bei der Ausführung

class B {};
struct A {
template<typename T> void f()       { Print( __FUNCSIG__ ); } //2
template<typename T> void f() const { Print( __FUNCSIG__ ); } //1
        void g()       { f<B>(); }
};
void OnStart()
{
        A a;
        a.g();
}
Infolgedessen wird die Methode const (1) anstelle von const (2) aufgerufen. Wenn Sie die Zeilen (1) und (2) (aber nicht die Indizes) vertauschen, ist die Konstante - wie erwartet - nicht vorhanden.
 

Hallo! Können Sie mir sagen, warum eine einfache Bedingung nicht erfüllt ist?

if ( Bid > High[iHighest(Symbol(),0,MODE_HIGH,30,1)] )

Das Fehlerprotokoll wird nicht angezeigt. Ich habe Comment(Bid) geschrieben und festgestellt, dass die Kommentierung aufhört, wenn Bid höher als High[...] wird.

Und diese Bedingung ist erfüllt:

if ( Bid > High[10] )
 
giros:

Hallo, können Sie mir sagen, warum die einfachste Bedingung nicht erfüllt ist?

Das Fehlerprotokoll wird nicht angezeigt. Vorgeschriebener Kommentar (Bid); und bemerkt, dass, wenn Bid mehr als High[...] wird, die Kommentierung aufhört.

Und diese Bedingung ist erfüllt:


Bitte fügen Sie den gesamten Code an, es gibt keine Fehler in dem, was Sie gezeigt haben...

 
Vladimir Pastushak:

Fügen Sie den gesamten Code an, es gibt keine Fehler in dem, was Sie gezeigt haben...

Ich habe den Code so weit wie möglich vereinfacht, um den Fehler zu finden, der Fehler liegt genau in der Zeile der Vergleichsbedingung Bid > High[...].
Hier ist der gesamte Code, und auch wenn er nicht ausgeführt wird, können Sie ihn kopieren und überprüfen:

void OnTick()
  {
   if ( Bid > High[iHighest(Symbol(),0,MODE_HIGH,20,1)] )
      {int Buy = OrderSend(Symbol(),OP_BUY,1,Ask,30,0,0,NULL,12345,0,clrBlue);}
  }
 
giros:

Ich habe den Code so weit wie möglich vereinfacht, um den Fehler zu finden, der Fehler liegt genau in der Zeile der Vergleichsbedingung Bid > High[...].
Hier ist der gesamte Code, und auch wenn er nicht ausgeführt wird, können Sie ihn kopieren und überprüfen:


Und welches Ergebnis erwarten Sie?

 
giros:

Ich habe den Code vereinfacht, um den Fehler zu finden. Der Fehler liegt in der Zeile der Vergleichsbedingung Bid > High[...].
Hier ist der gesamte Code, und auch wenn er nicht ausgeführt wird, können Sie ihn kopieren und überprüfen:


Ihr Zustand klingt wie folgt

Wenn der Geldkurs höher ist als das größte Hoch der letzten 20 Kerzen ohne den Null-Balken. Und dann öffnen Sie Aufträge ohne Unterbrechung.


Wenn Ihr aktueller Gebotspreis niedriger ist als das höchste Gebot, dann wird nichts unternommen...

 
Vladimir Pastushak:

Auf welches Ergebnis warten Sie?

In diesem Fall warte ich darauf, dass ein Kaufauftrag eröffnet wird.

Im allgemeinen Fall warte ich darauf, dass der Operator {...} ausgeführt wird.

 
giros:

In diesem Fall warte ich darauf, dass ein Kaufauftrag eröffnet wird.

Im allgemeinen Fall warte ich auf die - Ausführung des Operators {...}.


Lesen Sie Ihre Bedingung sorgfältig

 
giros:

In diesem Fall warte ich insbesondere darauf, dass ein Kaufauftrag eröffnet wird.

Im allgemeinen Fall warte ich auf den Operator {...}.


Ich habe Ihre Bedingung klar arbeiten, Aufträge öffnen...