Errori, bug, domande - pagina 2256

 
Nikolai Semko:

1881

Corretto dalla costruzione del 1886.

Nikolai Semko:
. E c'è di più. Non ne sono sicuro.
Un anno fa questi problemi non sembravano esistere.

Non hai visto i problemi.

Quando abbiamo aggiunto le funzioni iTime, iOpen, iHigh ecc. che sono in realtà degeneri di CopyTime, CopyOpen, CopyHigh ecc, abbiamo visto che c'erano casi in cui gli ultimi dati non erano ancora stati caricati e le funzioni restituivano il risultato. Nel caso di i-Functions questo si è rivelato critico.

Ora tutto dovrebbe funzionare correttamente e velocemente. Aspettate la build ufficiale.

 
Slava:

Corretto dalla build 1886.

Semplicemente non hai visto i problemi.

Quando abbiamo aggiunto le funzioni iTime, iOpen, iHigh etc, che sono in realtà degeneri di CopyTime, CopyOpen, CopyHigh etc, abbiamo visto che ci sono casi in cui gli ultimi dati non sono ancora caricati e le funzioni restituiscono il risultato. Nel caso di i-Functions si è rivelato critico.

Ora tutto dovrebbe funzionare correttamente e velocemente. Aspettate la build ufficiale.

Capito, grazie.
Cioè l'attuale build disponibile è il 1881? O mi sono perso qualcosa?
 
Nikolai Semko:
Capito, grazie.
Quindi l'attuale build disponibile è il 1881? O mi sono perso qualcosa?
Correntemente disponibile costruire 1881
 

Errore durante l'esecuzione:

class A {
public:
        template<typename T>
        A* A::f( T )
        {
                int size = ArraySize( i ) + 1;
                Print( __FUNCTION__, ":", size );
                if ( ArrayResize( i, size ) == -1 )
                        Print( __FUNCTION__, ":Error:", GetLastError());
                return &this;
        }
        template<typename T>
        A* A::operator+( T t ) { return  f( t ); }
        int i[];
};
void OnStart()
{
        A a;
        a + 0 + 0;
}

Risultato: atteso:

A::f<int>:1 A::f<int>:1
A::f<int>:753790661 A::f<int>:2
A::f<int>:Error:4007

Altrimenti:

void OnStart()
{
        A a;
        a.f( 0 ).f( 0 );
}

OK. Qual è la differenza? Perché la dimensione dell'array è diventata improvvisamente 753790660 (invece di uno) e di conseguenza la memoria è improvvisamente finita (4007)? MT5\1881\32

Inoltre... Se cancelliamo letteralmente tre caratteri nella prima variante, il risultato sarà anche ok

 
A100:

Errore di esecuzione:
Perché la dimensione dell'array è diventata improvvisamente 753790660 (invece di uno) e quindi ha improvvisamente esaurito la memoria (4007)? MT5\1881\32

MT5\1881\64
debug - tutto ok.
rilascio - errore di compilazione "Errore interno del compilatore".

 

Errore di compilazione:

class A {
        int A::f() { return NULL; } //нормально
        A  *A::g() { return NULL; } //Error: object of 'A' cannot be returned, copy constructor 'A::A(const A &)' not found
};
MT5\1881\32
 
A100:

Perché dovresti scrivere {} dentro una classe come questa (::)?

 

Errore di compilazione:

class A {
        int A::f();
        template <typename T>
        A*  A::g();
};
int A::f() { return NULL; } //нормально
template<typename T>
A*  A::g() { return NULL; } //Error: 'g' - function already defined and has different type
 
fxsaber:

Perché dovresti scrivere {} dentro una classe come questa (::)?

Perché no?

class A {
        void A::f() {} //нормально
};
È più o meno così... Voglio scriverlo... se voglio, non lo faccio.
 
A100:

Perché no?

Non è una ragione.

È più o meno così... Voglio scrivere... se voglio, non lo faccio.
Questo aiuta molto nella lettura del codice ed evita gli errori in alcune situazioni.
Motivazione: