Errori, bug, domande - pagina 1974

 

Errore di compilazione

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
};
E se si scambiano le linee (1) e (2), va bene. Qual è la differenza?
 

Errore di esecuzione

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();
}
Di conseguenza, il metodo const (1) viene chiamato al posto di const (2). Se scambiate le linee (1) e (2) (ma non gli indici), non è const - come previsto
 

Ciao, puoi dirmi perché una semplice condizione non è soddisfatta?

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

Il registro degli errori non compare. Ho scritto Comment(Bid); e ho notato che quando Bid diventa più alto di High[...], il suo commento si ferma.

E la condizione di questo tipo è soddisfatta:

if ( Bid > High[10] )
 
giros:

Ciao, puoi dirmi perché una semplice condizione non è soddisfatta:

Il registro degli errori non compare. Commento prescritto (Bid); e ha notato che quando Bid diventa più di High[...], il suo commento si ferma.

E la condizione di questo tipo è soddisfatta:


Allega tutto il codice, non ci sono errori in quello che hai mostrato...

 
Vladimir Pastushak:

Allega tutto il codice, non ci sono errori in quello che hai mostrato...

Ho semplificato il codice il più possibile per trovare l'errore, l'errore è esattamente nella linea della condizione di confronto Bid > High[...].
Ecco l'intero codice, e anche se non viene eseguito, potete copiarlo e controllarlo:

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:

Ho semplificato il codice il più possibile per trovare l'errore, l'errore è esattamente nella linea della condizione di confronto Bid > High[...].
Qui c'è tutto il codice, e anche se non viene eseguito, potete copiarlo e controllarlo:


E quale risultato ti aspetti?

 
giros:

Ho semplificato il codice per trovare l'errore. L'errore è nella linea della condizione di confronto Bid > High[...].
Ecco l'intero codice, e anche se non viene eseguito, potete copiarlo e controllarlo:


La sua condizione suona così

Se il prezzo dell'offerta sarà superiore al più grande massimo delle ultime 20 candele, esclusa la barra zero. E poi aprire gli ordini senza fermarsi.


Se il tuo attuale prezzo d'offerta è inferiore al più alto, allora nessuna azione...

 
Vladimir Pastushak:

Che risultato state aspettando?

In particolare in questo caso sto aspettando che venga aperto un ordine di acquisto.

Nel caso generale sto aspettando che l'operatore {...} venga eseguito.

 
giros:

In particolare in questo caso sto aspettando che venga aperto un ordine di acquisto.

Nel caso generale sto aspettando - l'esecuzione dell'operatore {...}.


Legga attentamente la sua condizione

 
giros:

In particolare in questo caso sto aspettando l'apertura di un ordine di acquisto.

Nel caso generale sto aspettando l'operatore {...}.


Ho la tua condizione che funziona chiaramente, gli ordini si stanno aprendo...

Motivazione: