Erreurs, bugs, questions - page 2065

 
Vous ne pouvez le faire qu'à l'intérieur de la classe A. Ça me paraît bien.
 

fxsaber:

Comment connaître le nom d'un fichier à partir de son identifiant ?

Autant que je me souvienne, il n'y a aucun moyen
 
Комбинатор:
Vous ne pouvez le faire qu'à l'intérieur de la classe A. Ça me semble bien.

erreur

    this.i = Value.i;       // 'i' - protected member access error

a déjà été corrigé, veuillez attendre la nouvelle version.

 

ошибка

a déjà été corrigé, veuillez attendre la nouvelle version.

Ils savent mieux que quiconque. Une erreur est une erreur
 

MetaEditor ajoute un point au nom du fichier

Séquence des opérations :

  • Dans Explorer, créez un document texte Test.txt.
  • Ouvrez-le dans MetaEditor via Fichier/Ouvrir.
  • Puis sélectionnez Fichier/Enregistrer sous...


Par conséquent, le nom du fichier sera Test2..txt au lieu de Test2.txt.

Le bloc-notes, toutes choses égales par ailleurs, n'ajoute pas de points supplémentaires au nom du fichier.
 

fxsaber:

a déjà été corrigé, veuillez attendre la nouvelle version.

Nous devons voir comment le problème est résolu car, dans un cas similaire, le compilateur Microsoft exige pour une raison quelconque de prendre l'implémentation de la méthode (dans ce cas l'opérateur =) en dehors de la classe

https://www.mql5.com/ru/forum/1111/page2001#comment_5679732

https://www.mql5.com/ru/forum/1111/page2001#comment_5680465

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.08.29
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

Cela semble être le mauvais comportement pour le langage, car cela limite les possibilités.

struct A {};

class B
{
public:
  const A a;
  
  B( const A &in ) : a(in) // 'a' - constructor not defined
  {
  }
};


Je dois définir un champ de type const comme une structure. Je pensais que l'opérateur de copie fonctionnerait, mais le compilateur veut un constructeur à la place, car la syntaxe est similaire. Mais c'est faux.

 
Message d'erreur erroné
struct A
{
  const int i;
};

void OnStart()
{
  A a1, a2;
  
  a1 = a2; // '=' - not allowed for objects with protected members or inheritance
}
 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2017.05.19 22:35

TimeTradeServer peut renvoyer toutes sortes d'absurdités. Par exemple, une valeur inférieure à TimeCurrent. Cela annule complètement son application pratique.

Si je comprends bien l'idée, le TimeTradeServer doit calculer le temps écoulé après avoir reçu le TimeCurrent et ajouter cette différence, émulant en quelque sorte les futures valeurs du TimeCurrent.

Maintenant, après avoir exécuté le conseiller expert

#define  TOSTRING(A) #A + " = " + (string)(A) + "\n"

void OnInit()
{
  EventSetTimer(1);
}

void OnTimer()
{
  Comment(TOSTRING(TimeTradeServer()) + TOSTRING(TimeCurrent()));
}

vous pouvez voir n'importe quel non-sens.

Notez les dates.


C'est ainsi que TimeTradeServer renvoie l'heure locale. Encore une fois, veuillez corriger le comportement correct.
 
fxsaber:

Cela semble être le mauvais comportement pour le langage, car cela limite les possibilités.

Je dois définir un champ de type const comme une structure. Je pensais que l'opérateur de copie fonctionnerait, mais le compilateur veut un constructeur à la place, car la syntaxe est similaire. Mais c'est faux.

C'est correct parce que c'est sans ambiguïté (c'est toujours un constructeur dans la liste d'initialisation, pas un opérateur), c'est faux d'une autre manière :

struct S {
        S()                        { Print( __FUNCSIG__ ); }
        void operator=( const S& ) { Print( __FUNCSIG__ ); }
};
void OnStart()
{
        S s;
        S s1 = s;

}

Résultat :

void S::S() (1)
void S::S() (2)
void S::operator=(const S&) (3)

alors que le C++ ne produit pas les lignes (2) et (3), et donc ne remplace pas le constructeur de copie manquant par une symbiose du constructeur par défaut et de l'opérateur d'affectation

Raison: