Erreurs, bugs, questions - page 1736
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Je suis très intéressé ! Veuillez expliquer la réponse du Service Desk avec un exemple.
& == GetPointer(). * - rien n'a changé.
si quelqu'un est intéressé, la réponse est servicedesk :
À propos, je leur ai envoyé l'autre jour une proposition concernant l'introduction de pointeurs pour tout type de données. Et cette restriction ridicule est déjà ennuyeuse.
il serait bien d'introduire la surcharge de l'opérateur *, parce que sans elle nous ne pouvons pas réaliser l'identité avec la STL, aussi il serait bien d'introduire le typedef en entier, pas seulement sur le calback`i
Quel genre d'exemple voulez-vous ?
Ce que vous attendez de * et de &. Quelque chose de simple mais d'illustratif. Pour voir la commodité.
Ce que je veux, je l'ai déjà écrit plus haut.
Vous pouvez inventer vous-même un exemple avec l'opérateur '&' où vous utilisez GetPointer(...), c'est essentiellement une forme courte
L'exemple avec l'opérateur '*' - je ne sais pas si cela vous aide à comprendre :
{
int m_value;
public:
Iterator(const int val) : m_value(val) { }
int operator*() { return m_value; }
};
int main(int argc, char **argv) {
Iterator *_it = new Iterator(5);
int _val = **_it;
//---
return 0;
}
cela fonctionne en C++, mais en MQL vous devrez faire un geter pour obtenir m_value.
Ajoutez à l'aide que ChartRedraw(MainChartID) ne convient pas pour redessiner OBJ_CHART. La fonction ChartRedraw(ObjChartID) est requise.
Par conséquent, l'exemple donné dans l'aide est incorrect.
Veuillez ne pas limiter l'échelle à N <= 5 (taille de la zone sous la barre = 2^N).
Ceci est nécessaire (et est devenu pratique) pour pouvoir examiner plus en détail l'historique des tics.
{
public:
const int a;
A( int c = 0 ) : a(c) {}
virtual int f()
{
Print(__FUNCTION__);
return(this.a);
}
};
class B : public A
{
public:
const int b;
B( int c = 0 ) : A(c), b(this.f()){}
virtual int f()
{
Print(__FUNCTION__);
return(this.a);
}
};
void OnStart()
{
B b;
A* a = new B;
delete a;
}
Résultat
2016.10.18 09:35:01.981 Test14 (GBPUSD,M1) B::f
Quelle est la raison de la sortie de B::F et non de A::f ? Le script est écrit de telle manière que f est appelé AVANT que le corps du constructeur ne soit exécuté (en gras). Mais à ce stade, le constructeur de la classe de base A a déjà été appelé. C'est pourquoi this.f() semble faire exactement référence à la classe de base avant que le constructeur B ne soit appelé. Veuillez expliquer où se situe l'erreur de raisonnement/prédiction.
{
const int a;
A() : a(this.f()) {}
int f() { return(0); }
};