Nun, das ist Ihre Meinung, ich denke genau das Gegenteil.
Was genau gefällt Ihnen nicht? Dass ein Zeiger in MQL eigentlich eine Referenz ist? Und die Adressarithmetik in MQL macht keinen Sinn und wird daher nicht verwendet!
Smart Pointer haben auch keine Adressarithmetik, aber sie werden aus irgendeinem Grund verwendet
Streng genommen nicht, aber in Abwesenheit von Adressarithmetik ist ein MQL-Zeiger näher (oder zumindest nicht weiter) an einer C++-Referenz als ein C++-Zeiger
Und wenn ja, muss die Syntax entsprechend beibehalten werden (ohne *)
Streng genommen ist das nicht der Fall, aber in Ermangelung von Adressarithmetik ist der Zeiger/MQL-Zeiger näher (oder zumindest nicht weiter) an einer C++-Referenz als an einem C++-Zeiger
Und wenn ja, sollte die Syntax entsprechend gespeichert werden (ohne *)
Warum sollte man es so kompliziert machen? Es reicht, wenn . und -> gleichwertig und austauschbar sind.
Bildlich gesprochen.
Wenn man sie austauschbar macht, braucht man einfach nicht beide.
In C++ ist dies möglich:
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(); //
Der Operator -> sollte eigentlich in die Sprache aufgenommen werden, erstens aus Gründen der Kompatibilität mit C++-Codes und zweitens, um das Überladen zu ermöglichen (was für intelligente Zeiger nützlich ist).
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
es gibt kein Konzept mehr, ein Objekt und ein Zeiger darauf werden in einem Haufen vermischt
Dadurch können Zeiger als Objekte behandelt werden, was in einigen Fällen eine einfachere und klarere Schreibweise ohne *
und solche Zeiger können auch als Referenzen verwendet werden
Und jetzt wollen sie alles zerstören und in die Steinzeit zurückkehren, nur um irgendetwas zu erreichen.
Und jetzt schlagen sie vor, alles zu zerstören und in die Steinzeit zurückzukehren, wer weiß, wofür.
Nun, das ist Ihre Meinung. Ich denke genau das Gegenteil.
Nun, das ist Ihre Meinung, ich denke genau das Gegenteil.
A100:
А что конкретно Вас не устраивает? Что в MQL указатель это фактически ссылка?
das ist nicht wahr )
Während in MQL die Adressarithmetik bedeutungslos ist und daher nicht verwendet wird!?
eigentlich ist es das nicht )
Smart Pointer haben auch keine Adressarithmetik, aber sie werden aus irgendeinem Grund verwendetStreng genommen nicht, aber in Abwesenheit von Adressarithmetik ist ein MQL-Zeiger näher (oder zumindest nicht weiter) an einer C++-Referenz als ein C++-Zeiger
Und wenn ja, muss die Syntax entsprechend beibehalten werden (ohne *)
Nein, es gab keine schwerwiegenden Gründe.
Die einzige Rechtfertigung für sein Fehlen ist die Schonung der zarten Gemüter von Benutzern, die mit C++ nicht vertraut sind.
Streng genommen ist das nicht der Fall, aber in Ermangelung von Adressarithmetik ist der Zeiger/MQL-Zeiger näher (oder zumindest nicht weiter) an einer C++-Referenz als an einem C++-Zeiger
Und wenn ja, sollte die Syntax entsprechend gespeichert werden (ohne *)
Warum sollte man es so kompliziert machen? Es reicht, wenn . und -> gleichwertig und austauschbar sind.
Bildlich gesprochen.
Wenn man sie austauschbar macht, braucht man einfach nicht beide.
In C++ ist dies möglich:
Der Operator -> sollte eigentlich in die Sprache aufgenommen werden, erstens aus Gründen der Kompatibilität mit C++-Codes und zweitens, um das Überladen zu ermöglichen (was für intelligente Zeiger nützlich ist).
Der Punkt ist ein universeller Operator in MQL.
Warum hat MQL den Fehler nicht behoben, dass eine Basisklasse implizit in eine abgeleitete Klasse gecastet wird? Nicht einmal eine Compilerwarnung!