Erreurs, bugs, questions - page 1784

 
-Aleks-:

Hélas, je ne connais pas ce format.

L'expérience a montré que le nombre dans le tampon graphique est représenté par les mêmes règles que le double - c'est-à-dire qu'il n'est pas possible de faire passer un nombre aussi long dans le tampon graphique - ce qui est frustrant.

Hélas, le tampon graphique ne peut contenir qu'un nombre de 10 chiffres.

Au fait, pourquoi y a-t-il une limite de 4 décimales ?

 

Erreur de compilation (ou plutôt pas de message d'erreur)

class A {
public:
        int i;
};
class B : public A {};
class C : protected A {};
class D : protected B {};
void OnStart()
{
        C c;
        Print( c.i ); //Error: 'i' - protected member access error
        D d;
        Print( d.i ); //нормально???
}
 

Erreur d'exécution : le chargement de l'EX5 a échoué

class A;
typedef void (*f)( A*);
class A {
    virtual void g( A *a ) {}
        f ff;
};
void OnStart() { Print( __FUNCTION__ ); }
 

Erreur pendant l'exécution

class B;
void f( B* );
class A { public:
        virtual ~A() { f((B *)&this ); } //(*)
        virtual void g( A* ) { Print( __FUNCTION__ ); }
};
class B : public A { public:
        virtual void g( A* ) { Print( __FUNCTION__ ); }
};
void f( B *b ) { b.g( b ); }
void OnStart() //(1)
{
        B *b = new B;
        delete b;
}

Résultat : casting incorrect des pointeurs dans (*)

Et si

void OnStart() { B b; } //(2)

résultat : B::g

mais quelle est la différence fondamentale entre OnStart (1) et (2) ?

D'ailleurs, le résultat d'un code similaire en C++ : A::g

 

A100: 

À quoi servirait un destructeur virtuel comme celui de votre exemple ci-dessus ? Peut-elle être remplacée dans le descendant ?

 
fxsaber:

À quoi servirait un destructeur virtuel comme celui de votre exemple ci-dessus ? Peut-elle être remplacée dans le descendant ?

Dans MQL, il est toujours virtuel, même s'il n'est pas spécifié explicitement.
 
A100:
Dans MQL, c'est toujours virtuel, même si ce n'est pas explicitement indiqué.
Vous n'avez donc pas répondu à la question - pour quoi faire ?
 
fxsaber:
Vous n'avez donc pas répondu à la question : pour quoi faire ?
Si tous les destructeurs de MQL sont virtuels, alors la question de savoir pourquoi nous avons besoin d'un destructeur virtuel se résume à la question de savoir pour quoi nous avons besoin d'un destructeur. Et c'est une question trop générale.
 
A100:
Si tous les destructeurs dans MQL sont virtuels, alors la question de savoir à quoi sert un destructeur virtuel se réduit à la question de savoir à quoi sert un destructeur ? Et c'est une question trop générale.
Je sais à quoi sert un destructeur. Je ne vois pas très bien pourquoi je devrais ajouter le mot "virtuel" avant sa définition.
 
fxsaber:
Je sais à quoi sert le destructeur. Je ne comprends pas pourquoi le mot "virtuel" devrait être écrit avant sa définition.
J'en ai besoin pour la compatibilité avec le code C++, car les destructeurs sont différents dans ce cas.
Raison: