Erros, bugs, perguntas - página 2326

 
TheXpert:
não há conceito agora, um objecto e um ponteiro para ele estão misturados numa pilha

Isto permite que os apontadores sejam tratados como objectos, o que, em alguns casos, dá uma notação mais simples e clara sem *

e tais apontadores podem também ser utilizados como referências

E agora propõem-se destruir tudo e regressar à Idade da Pedra, para que ninguém saiba o que

 
A100:

E agora propõem-se destruir tudo e voltar à Idade da Pedra para quem sabe o quê.

Bem, essa é a sua opinião. penso exactamente o contrário.

 
TheXpert:

Bem, essa é a sua opinião. Penso exactamente o contrário.

O que é que não lhe agrada exactamente? Que um ponteiro em MQL é realmente uma referência? E a aritmética de endereço em MQL não faz sentido, e por isso não é utilizada!
 

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

na verdade isso não é verdade )

Enquanto na aritmética de endereços MQL não faz sentido e por isso não é utilizada!?

os apontadores inteligentes também não têm aritmética de endereços, mas são utilizados por alguma razão
 
TheXpert:

na verdade não é )

os apontadores inteligentes também não têm aritmética de endereços, mas são utilizados por alguma razão

A rigor, não, mas na ausência de aritmética de endereço, um apontador MQL está mais próximo (ou pelo menos não mais longe) de uma referência C++ do que um apontador C++

E se assim for, a sintaxe deve ser preservada em conformidade (sem *)

 
Ilyas:

Não, não havia razões sérias.

A única justificação para a sua ausência é cuidar das mentes frágeis dos utilizadores não familiarizados com C++.

 
A100:

A rigor, não é, mas na ausência de aritmética de endereço o ponteiro/mQL está mais próximo (ou pelo menos não mais longe) de uma referência C++ do que de um ponteiro C++

E se assim for, a sintaxe deve ser armazenada em conformidade (sem *)


 
A100:

Porquê torná-lo tão complicado? É suficiente fazer registos . e -> equivalentes, intercambiáveis

Figurativamente falando.

Se os tornar permutáveis, simplesmente não precisa dos dois.

Em C++, isto é possível:

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();  //
 

O operador -> deve realmente ser acrescentado à língua, em primeiro lugar para efeitos de compatibilidade com os códigos C++ e em segundo lugar para permitir uma sobrecarga (que é útil para os apontadores inteligentes).

O ponto é um operador universal em MQL.

 

Porque é que a MQL não corrigiu o bug de que uma classe base é implicitamente lançada para uma classe derivada? Nem sequer um aviso do compilador!

class A {  };

class B : public A { };

A a;

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