Errori, bug, domande - pagina 1981

 
A100:

Questo non cambia nulla - errore di compilazione (ho un tablet - compilatore Borland)

Hmm, quindi bisogna andare agli standard del linguaggio e vedere di chi è il compilatore che fa casino.
 
Alexey Navoykov:
Hmm, quindi dobbiamo guardare negli standard del linguaggio e vedere di chi è il compilatore che fa casino.
La seconda opzione è simile

#ifdef __BORLANDC__
class B;
class A {
        int g( B * );
        int i;
};
class B : public A {};
int A::g( B *b ) { return b->i; } //Error: E224
#endif

VS 2010 fallisce perché supera il privato con la conversione implicita da B* ad A*


#ifdef __BORLANDC__

class B;
class A {
        int g( B * );
        int i;
};
class B : public A {};
int A::g( B *b ) { return ((A *)b)->i; } //нормально

#endif

 
Alexey Navoykov:
Hmm, quindi dobbiamo andare agli standard del linguaggio e vedere di chi è il compilatore che fa casino.
gcc 7.2 compila l'ultima versione, controllata qui
Compiler Explorer - C++
  • About the author
  • godbolt.org
These settings control how Compiler Explorer acts for you. They are not preserved as part of shared URLs, and are persisted locally using browser local storage.
 
Комбинатор:
gcc 7.2 compila l'ultima versione, controllata qui

Il risultato è la seguente tabella

class B;
class A {                                       //MQL //BCC //VS2010 //gcc
        int f1( B *b ) { return       b .i;   } // -     -     +        +
        int f2( B *b ) { return       b .g(); } // +     -     +        +
        int f3( B *b ) { return ((A *)b).i;   } // +     +     +        +
        int f4( B *b ) { return ((A *)b).g(); } // +     +     +        +
        int f5()       { return       b .i;   } // -     -     +        +
        int f6()       { return       b .g(); } // +     -     +        +
        int f7()       { return ((A *)b).i;   } // +     +     +        +
        int f8()       { return ((A *)b).g(); } // +     +     +        +
//---
        int g() { return 0; }
        int i;
        B *b;
};
class B : public A {};

E msdn dice: Il controllo degli accessi aiuta a prevenire che gli oggetti siano usati per scopi non autorizzati. Questa protezione si perde quando si eseguono conversioni esplicite di tipo(type conversions).
 

Ciao a tutti.

Puoi dirmi se c'è un modo per rimuovere la finestra dell'indicatore che appare nello strategy tester quando la visualizzazione è abilitata?

È generato da wizarda in MT5.

Ho letto nella documentazione di MQL5 che IndicatoRelease non funziona in Strategy Tester. (Ho provato a inserire questa funzione in OnDeinit comunque, inizia a lamentarsi che un handle non è dichiarato. Lo dichiaro, genera altri errori).

C'è un altro modo?

 
Ahmet Garyagdyyev:

Ciao a tutti.

Puoi dirmi se c'è un modo per rimuovere la finestra dell'indicatore che appare nello strategy tester quando la visualizzazione è abilitata?

È generato da wizarda in MT5.

Ho letto nella documentazione di MQL5 che IndicatoRelease non funziona in Strategy Tester. (Ho provato a inserire questa funzione in OnDeinit comunque, inizia a lamentarsi che un handle non è dichiarato. Lo dichiaro, genera altri errori).

C'è un altro modo?


È possibile cambiare il modello con tutti gli indicatori, a uno qualsiasi di quelli precedentemente salvati da voi.

 
A100:

Il risultato è la seguente tabella

VS e gcc sono stati a lungo considerati come il riferimento* (o almeno largamente meno soggetti a bug) di Borland. Io stesso ho usato Borland per molti anni, ma basandomi sui suoi altri vantaggi.

PS. *Questa non è la mia opinione personale; non la discuterò.

 

Colleghi, qualcuno ha incontrato tentativi di implementare una libreria STL c++ (tenendo conto delle capacità del linguaggio)? Preferibilmente con posizionamento codobase, la ricerca dice di no, ma vrdug ... . Certamente non tutto, ma alcune cose di base: alcuni contenitori normali tramite template, e quell'auto_ptr (certamente ho scritto il mio, ma auto-scrivere tali primitive è stupido).
Non capisco perché std µl è non-template e perché abbiamo dovuto inventare nuovi nomi per metodi/classi analoghi in STL.

 

Ho trovato un errore, non ho intenzione di inserire il testo compilato completamente, tirerò pezzi dallo script:

class Source : public CObject
{
public:
   upindex_t start, top, lstart, ltop;
};

CArrayObj sourcear;

do
{
   Source *new_src = new Source;
   new_src.start = last.start;
   new_src.top = last.top;
   new_src.lstart = prev_prev.start;
   new_src.ltop = prev_prev.top;
   if( ! sourcear.Add(new_src) )
      return;
}
while(...);

for(int i = 0;  i < sourcear.Total();  ++ i)
{
   Source cursrc = (Source*)sourcear.At(i);  //!!!!! Это не вызывает ошибки во время компиляции
}

Cioè cast: CObject*--> Source* --> Source

O è una specie di complicato MQL specifico?


ZS: e tale stringa viene mangiata:

Source new_src = new Source;

Questa è una sciocchezza. Nessuna copia di contro/operatori nella lingua, non l'ho dereferenziata. Cosa sta succedendo qui?

 
pavlick_:

O è qualche complicato MQL specifico?

class A {};

void OnStart()
{
  A a = new A;
}

Viene attivato l'operatore di copia predefinito.