MQL5 O compilador não faz distinção entre uma classe e um ponteiro para ela - página 10

 
Ilya Malev:

E quanto mais tempo voou antes que essas operações fossem realmente introduzidas... Provavelmente só o vento sabe. Mas sim, coisas muito importantes podem ser trazidas à tona no fórum por anos sem muito sucesso

Se você não ficar preguiçoso e rolar para frente, você pode ver tudo:

Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste

Bichos, insetos, perguntas

Ilyas, 2015.09.03 14:30


Adicionados operadores *(Dereferência/Informação) e &(Endereço de), nenhuma mudança adicional de idioma será feita/planejada.
A *a,*b;

 a== b;   // сравнение "указателей"
*a== b;   // вызов оператора ==(A *)
 a==*b;   // вызов оператора ==(A &)

// для операции != аналогично

// операция & - эквивалент(короткая запись) вызову GetPointer

 
Alexey Navoykov:

Bem, se você não ficar preguiçoso e rolar um pouco para frente, você pode ver tudo:

Se você descer mais, você encontrará isto:

Ilyas:
Adicionado aos dois idiomas. Mas, infelizmente, não chegará à próxima construção.

Em geral, é claro que há cerca de três anos, muito provavelmente, foram acrescentados... Mas onde estão as notícias, onde está a documentação, a ajuda, por que há apenas uma menção de & operador e não *, se eles foram adicionados ao mesmo tempo? A julgar pelo fato de que & está na documentação e * não está, podemos supor que foi * que foi abandonado por alguma razão mesmo antes da liberação e finalmente adicionado mais tarde. Para descobrir isto com certeza, você precisa encontrar uma notícia sobre o prédio onde isto foi adicionado, ou perguntar aos próprios administradores.

 
Posso dar aos curiosos construções 1047, 1085, 1210 e 1224 (por volta dessa época) para experimentação ;)

 
Andrey Khatimlianskii:
Posso dar-lhe os edifícios 1047, 1085, 1210 e 1224 (da época) para experimentação ;)

Você pode me dar isso. Meu e-mail está no meu perfil.

 
Ilya Malev:

Você pode me dar isso. Meu endereço de e-mail está no meu perfil.

Talvez alguém mais gostasse.

 
Sim, é um verdadeiro tema invernal ))
 
47 não está funcionando para mim.
85 (MT4 13.02.15) * não funciona
1210 (MT5 30.10.15) * não funciona
1224 (MT5 16.12.15) * não funciona (ou seja, 3 na ortografia três meses após esse post do tópico de perguntas)

Ao mesmo tempo, o & em 1224 compila para "hurrah". O que prova minha hipótese de que apenas & e não * foram adicionados então

 

Isto é, originalmente, foram acrescentadas indicações à MQL sem a possibilidade de desreferenciá-las no código. Esta é uma abordagem interessante.

É deixado para terminar a aritmética do ponteiro ou já é de alguma forma possível?

class A
{
public:

    int iValue;
};
//......................
A m_A[5];

void OnStart()
{
A* pA;

    for(int c =0; c < 5; c++)
    {
        pA = &m_A[c]; 
        
        (*pA).iValue =c;
        printf("A[%i].iValue: %i", c, m_A[c].iValue);
        // pA++
    }
}
 
SemenTalonov:
(* pA).iValue =c;

Este aqui: (* ) não é necessário aqui

* só é necessário em µl quando as operações =, ==, !=, !, && ou ||| são aplicadas diretamente no ponteiro *
 
Ilya Malev:
O & em 1224, por outro lado, compila com cores voadoras. O que prova minha hipótese de que apenas & e não * foram acrescentados naquela época.

A propósito, pode muito bem ser que como todos os canais oficiais (fórum, ajuda, documentação) se mantenham em silêncio sobre o * operador, os administradores podem estar pensando em removê-lo novamente e fingir que ele nunca existiu))) Portanto, é perigoso confiar muito em seu uso no momento, imho.