Erreurs, bugs, questions - page 1032

 
A100:
Il s'agissait d'un exemple simplifié au maximum. Le but était précisément de surcharger l'opérateur. Cela nous laisse avec la transformation explicite.
Merci d'avoir simplifié l'exemple. De telles simplifications sont très pratiques pour les erreurs d'analyse syntaxique.
 
Une autre incohérence
class A {
public:
        virtual int f() { return ( 1 ); }
};

class B : public A {
public:
        virtual int f() { return ( 2 ); }
};

int g( A& a )
{
        return ( a.f() );
}

void OnStart()
{
        B b;
        Print( g( b ) ); // результат: 1
}
Alors qu'une construction similaire en C++ renvoie le résultat : 2, ce qui est logique car l'objet est B et non A
 
A100:
Une autre incohérenceAlors qu'une construction similaire en C++ renvoie le résultat : 2, ce qui est logique, car l'objet est exactement B, et non A
Oui, cela ressemble à une erreur, merci de l'avoir trouvée - nous allons certainement la vérifier et la corriger.
 
Les éléments du vote ne sont pas traduits automatiquement.
 
MetaDriver:

Quelle est votre situation ?

Je ne peux pas reproduire votre situation pour une raison simple : je ne dispose pas d'un :

Oui, c'était dans le téléchargement du fichier qui était l'erreur, pas dans les tampons. Il semble qu'il soit passé à autre chose maintenant.
 
Al_key:
Oui, il y avait une erreur dans le téléchargement du fichier, pas dans les tampons. Aujourd'hui, il semble être passé à autre chose.

Une dernière question :

Avez-vous un exemple de la façon d'exécuter un indicateur personnalisé sur des petits graphiques (ceux qui ont des objets et peuvent être jetés par-dessus le graphique principal) ? J'utilise dans MT4 des indices de devises et il serait très cool de les voir dans une petite fenêtre mobile de MT5, au lieu de gaspiller la moitié de l'écran.

 
Le signal copie la transaction, mais le volume est toujours de 0,01 et celui du vendeur est différent. Que dois-je faire ? Je veux que le volume soit le même que celui du vendeur.
 
A100:
Ceci est tiré de la référence MQL5 :

Tout caractère unique placé entre guillemets simples ou codé en caractères ASCII hexadécimaux comme '\x10' est une constante de caractère et est de type ushort.

La question se pose alors de savoir pourquoi le compilateur ne peut pas distinguer ushort de int - sans le spécifier explicitement ?
J'ai trouvé la raison, il s'avère que le compilateur considère un seul caractère entre guillemets, par exemple '5' non pas ushort, mais short, comme le confirme l'exemple :
class A {
public:
        int operator<<( ushort ch ) { return ( 1 ); }
        int operator<<( short  ch ) { return ( 2 ); }
        int operator<<( int   ch ) { return ( 3 ); }

        int f( ushort ch ) { return ( 4 ); }
        int f( short  ch ) { return ( 5 ); }
        int f( int   ch ) { return ( 6 ); }
};

int h( ushort ch ) { return ( 7 ); }
int h( short  ch ) { return ( 8 ); }
int h( int   ch ) { return ( 9 ); }

void OnStart()
{
        A a;
        Print( a << '5' );  // результат: 2
        Print( a.f( '5' )); // результат: 5
        Print( h( '5' ));   // результат: 8
}

Tout se compile, fonctionne et ne nécessite pas de spécifier des conversions explicites.

Par conséquent, soit la description ne correspond pas au compilateur, soit le compilateur ne fonctionne pas selon la description. Je voudrais une correspondance.

 

qu'est-ce que ça peut être :

erreur d'exécution critique 1079902208 dans la fonction OnTick (erreur inconnue)

tests dans un délai de 2 heures

Il est utile de vérifier si des outils sont disponibles.

 
Pourquoi le CFD ne fonctionne-t-il pas ?
Raison: