Erreurs, bugs, questions - page 2326

 
A100:

Et maintenant, ils proposent de tout détruire et de retourner à l'âge de pierre pour on ne sait quoi.

Eh bien, c'est votre opinion. Je pense exactement le contraire.

 
TheXpert:

Eh bien, c'est votre opinion. Je pense exactement le contraire.

Qu'est-ce que vous n'aimez pas exactement ? Qu'un pointeur dans MQL est en fait une référence ? Et l'arithmétique des adresses dans MQL n'a aucun sens, c'est pourquoi elle n'est pas utilisée !
 

A100:
А что конкретно Вас не устраивает? Что в MQL указатель это фактически ссылка?

En fait, ce n'est pas vrai.)

Alors qu'en MQL, l'arithmétique des adresses n'a aucun sens et n'est donc pas utilisée !?

Les pointeurs intelligents n'ont pas non plus d'arithmétique d'adresse, mais ils sont utilisés pour une raison quelconque.
 
TheXpert:

en fait, ce n'est pas le cas)

Les pointeurs intelligents n'ont pas non plus d'arithmétique d'adresse, mais ils sont utilisés pour une raison quelconque.

Strictement parlant, non, mais en l'absence d'arithmétique d'adresse, un pointeur MQL est plus proche (ou du moins pas plus loin) d'une référence C++ qu'un pointeur C++.

Et si c'est le cas, la syntaxe doit être préservée en conséquence (sans *)

 
Ilyas:

Non, il n'y avait pas de raisons sérieuses.

La seule justification de son absence est de ménager les esprits fragiles des utilisateurs peu familiarisés avec le C++.

 
A100:

Strictement parlant, ce n'est pas le cas, mais en l'absence d'arithmétique d'adresse, le pointeur/mQL est plus proche (ou du moins pas plus loin) d'une référence C++ que d'un pointeur C++.

Et si c'est le cas, la syntaxe doit être stockée en conséquence (sans *)


 
A100:

Pourquoi le rendre si compliqué ? Il suffit de rendre les enregistrements . et -> équivalents, interchangeables.

Au sens figuré.

Si vous les rendez interchangeables, vous n'avez tout simplement pas besoin des deux.

En C++, c'est possible :

class A
{

public:
   void f();
};

class PtrA
{
  A* mPtr;

public
   PtrA( A* a ) : mPtr( a ){}

   A* operator->()
   {
      return mPtr;
   }

   void f();
};

PtrA a( new A );

a.f();   //  Это две разные функции
a->f();  //
 

L'opérateur -> devrait vraiment être ajouté au langage, d'abord pour des raisons de compatibilité avec les codes C++ et ensuite pour permettre la surcharge (ce qui est utile pour les pointeurs intelligents).

Le point est un opérateur universel dans MQL.

 

Pourquoi MQL n'a-t-il pas corrigé le bogue qui fait qu'une classe de base est implicitement castée dans une classe dérivée ? Même pas un avertissement du compilateur!

class A {  };

class B : public A { };

A a;

B* b= &a;  // Нет ошибки
 
Alexey Navoykov:

Pourquoi MQL n'a-t-il pas corrigé le bogue qui fait qu'une classe de base est implicitement castée dans une classe dérivée ? Même pas un avertissement du compilateur!

Cela doit être dû à cette construction correcte

class A {  };

class B : public A { };

A* a;

B* b= a;  // Нет ошибки

n'a pas été prise en compte.

Raison: