Erreurs, bugs, questions - page 2200

 
fxsaber:
Pourquoi le script ne produit-il rien ?
car il s'agit d'un transfert de pointeur et non d'un transfert de valeur.
 
Комбинатор:
parce que c'est par référence et non par valeur

Je ne le comprends pas du tout. Voici le code

class A
{
public:
  template <typename T>
  void operator =( T& ) // Без ссылки работает
  {
    Print(__FUNCSIG__);
  }
  
  void operator =( int )
  {
    Print(__FUNCSIG__);
  }
};

void f( A*& )
{
  Print(__FUNCSIG__);
}

void OnStart()
{
  A* a = new A;  
  
  A b;  
  b = a; // cannot convert type ' *' to reference of type 'A *'
  
  a = a;
  a = 1;
  
  f(a);
  
  delete a;
}

Il se plaint en quelque sorte de passer un pointeur par référence. Dans le même temps, la fonction f reçoit calmement le pointeur par référence.


Le résultat est

void A::operator=<A*>(A*)
void A::operator=(int)
void f(A*&)

L'opérateur int a été appelé sans problème, alors que l'opérateur pointeur ne l'a pas été.

 
Logiquement, cela ne devrait pas fonctionner sans référence non plus (imho). C'est peut-être une caractéristique des pointeurs mql - qu'ils n'ont pas besoin d'être déréférencés.
 
Комбинатор:
Logiquement, cela ne devrait pas fonctionner sans référence (imho). C'est peut-être une caractéristique des pointeurs mql - ils n'ont pas besoin d'être déréférencés.

Une demande à tous ceux qui comprennent le sujet, découvrons-le. C'est un peu le bordel en ce moment.

J'avais l'habitude de penser qu'un opérateur était simplement l'une des méthodes pratiques à utiliser en raison de sa syntaxe. Et aucune autre distinction. Il s'avère maintenant que ce n'est pas toujours le cas.

 
fxsaber:

J'avais l'habitude de penser qu'un opérateur était juste une des méthodes

tout opérateur oui. mais

1. opérateur = l'un des plus populaires

2. le seul opérateur qui est généré par le compilateur

 
Комбинатор:

tout opérateur oui. mais

1. opérateur = l'un des plus demandés

2. le seul opérateur qui est généré par le compilateur

Donc opérateur surchargé/surchargé.

 

J'avais tort, ça devrait fonctionner sans le lien. ça veut dire que ça ne fonctionne pas avec le lien à cause des nuances de substitution.

En plus, cela fonctionne aussi avec une référence.

Si vous avez des questions à ce sujet, il est préférable de vérifier avec un point de référence, c'est-à-dire le C++. Cependant, la syntaxe peut être légèrement différente

operator_fxsaber, C++ (gcc) - rextester
  • rextester.com
operator_fxsaber in C++ (gcc)
 
Комбинатор:

J'avais tort, ça devrait fonctionner sans le lien. ça veut dire que ça ne fonctionne pas avec le lien à cause des nuances de substitution.

Il fonctionne dans les plus et avec un lien.

Si vous avez des questions à ce sujet, il est préférable de vérifier avec un point de référence, par exemple le C++, même si la syntaxe peut être légèrement différente.

Merci ! Malheureusement, je ne parle pas d'autres langues que MQL. J'ai également une mauvaise compréhension de MQL. J'apprends la programmation opérationnelle en MQL.

 

Au début, je pensais que je ne savais pas du tout l'arithmétique.


Comment ces deux nombres peuvent-ils donner 138,95 et comment l'addition de deux zéros peut-elle donner -24,34 ?

Mais ensuite j'ai réalisé :

Si des positions ouvertes hier ou avant sont fermées aujourd'hui, elles ne sont pas affichées, mais elles participent au calcul du montant des positions fermées.

Si vous modifiez la profondeur de l'historique affiché et que vous sélectionnez à nouveau "Aujourd'hui", toutes les positions perdues reprendront leur place.


Ce bogue sera-t-il corrigé ? Ou personne n'en a besoin ?

 

Ce soir, j'ai décidé de traduire une page de l'anglais -

"Le site utilise des cookies. En savoir plus sur notre politique en matière de cookies."

J'ai tapé le lien dans Yandex Translator et lu la traduction. Lorsque j'ai accédé au site Web de MQL5, j'ai obtenu ce qui suit :

Quelle est la manière correcte de traduire les pages d'autres langues ici, afin de ne pas obtenir ce genre de choses ?