Questions sur la POO dans MQL5 - page 77

 
Vladimir Simakov:

Je suis d'accord pour dire que c'est plus compliqué maintenant))))

J'ai poliment dit rien, même si je voulais demander un exemple de ne pas sortir dans un journal, mais dans un fichier - leur journalisation est plus pratique et a du sens, et dans le journal du terminal pour comprendre ce que le terminal sort, ce qui EA - très gênant

 

Quand est-ce qu'on va commencer à faire les liens physiques que MQ n'a pas encore ?

 

Experts en normes, voici une question :

Alors que ME est un désordre avec la mise en évidence {} , copié le code MQL dans un projet C++ vide dans VS2019, pourquoi VS jure à ce sujet :

struct SHash
{
  ulong hash[2];
  bool operator==(const SHash& value)const { return(this. hash[0] == value.hash[0] && this. hash[1] == value.hash[1]); }
};

écrit : "l'expression doit être de type classe".

 
Igor Makanu:

Expert en normes, voici une question :

Alors que ME est un désordre avec la mise en évidence {} , copié le code MQL dans un projet C++ vide dans VS2019, pourquoi VS jure à ce sujet :

écrit : "l'expression doit avoir un type de classe"

mais en C++ c'est un pointeur...

soit passer outre * ou spécifier explicitement ->

 
Maxim Kuznetsov:

et en C++ c'est un pointeur...

Soit remplacer * ou spécifier explicitement ->

J'ai pris l'habitude de mettre cela comme dans tous les articles ici, en général pour ne pas écrire n'importe où, il n'y a tout simplement pas d'options à l'intérieur de constructions aussi simples...pas moyen, imho

 
Igor Makanu:

Experts en normes, voici une question :

Alors que ME est un désordre avec la mise en évidence {} , copié le code MQL dans un projet C++ vide dans VS2019, pourquoi VS jure à ce sujet :

écrit : "l'expression doit être de type classe".

C'est ainsi que cela devrait être :

struct SHash
{
        long hash[2];
        bool operator==(const SHash& value)const { return(this->hash[0] == value.hash[0] && this->hash[1] == value.hash[1]); }
};
 
Andrei Novichkov:

C'est ainsi que cela devrait être :

J'en ai besoin dans MQL, j'ai téléchargé VS comme éditeur, pour parcourir le code et voir ce que je peux voir ;)))

Mais dans une telle structure pour MQL - il n'y a aucun sens à écrire ceci ?

 
Igor Makanu:

J'en ai besoin dans MQL, j'ai téléchargé VS comme éditeur, pour parcourir le code et voir ce que je peux voir )))).

mais dans une telle structure pour MQL - il n'y a aucun sens à écrire ceci ?

Je dois vérifier, mais à première vue, cette expression n'a aucun sens, pas seulement en MQL)
 
Igor Makanu:

écrire encore et encore - j'ai le temps (parce que je ne regarde pas la télévision) ) ) - recueillir des informations techniques sur les caractéristiques du langage, la programmation opérationnelle... Tout ce pour quoi il y a des questions - le forum est actif, j'utilise cette opportunité "à cent pour cent" ;)

La question est la suivante : quel est l'intérêt de passer de C# à MQL, si je peux simplement appeler mon code Sharp depuis MQL, à moins que je ne veuille le mettre dans Market ou l'optimiser dans MQ-cloud.

Après tout, la transition de C# à MQL, je suppose, est vraiment douloureuse : après s'être habitué à la commodité et à la facilité de travailler avec des objets, où vous n'avez pas à vous soucier de leur suppression, ici vous obtenez le contraire.Quoi qu'il en soit, une véritable POO nécessite la présence d'un compteur de référence pour les objets référencés. Et en C++, cela est résolu avec un wrapper - le pointeur intelligent. Dans MQL, l'utilisation des pointeurs intelligents est très encombrante en raison de l'absence d'opérateur ->, et d'autres problèmes.

Donc, si vous passez du C++, tout est plus ou moins clair : vous obtenez beaucoup d'inconvénients et de limitations, mais en général quelque chose de similaire. Et même quelques avantages (par exemple, une plus grande fiabilité au moment de l'exécution, en raison de l'environnement guidé). Mais lorsque l'on passe de Sharp à l'autre, je ne vois pas d'avantages. Seuls les inconvénients)

 
Igor Makanu:

J'ai appris à coller cela dans tous les articles ici, à ne pas écrire n'importe où, il n'y a tout simplement pas d'options à l'intérieur de structures aussi simples...ponts, imho

En général, un style très controversé est imposé ici)))). Le même

return (retValue);

Pourquoi des parenthèses ? Ce n'est pas JS, même si vous n'êtes pas obligé de le faire là non plus.

Et si vous avez vraiment besoin de cela et que ce serait dans les plus corrects, alors au lieu de cette macrosubstitution

#ifdef __cplusplus
   #define THIS *this
#else
   #define THIS this
#endif