Fehler, Irrtümer, Fragen - Seite 1707

 
Комбинатор:
Dem Zeiger wird rvalue zugewiesen, der dann mit new A überschrieben wird.

Wo? Genau hier?

this[0] = new A;

Hier gibt operator[] den in der Zelle Data[0] enthaltenen Wert zurück. Kein Verweis auf diese Zelle oder ein Zeiger auf sie, sondern nur eine Kopie des in dieser Zelle enthaltenen Wertes, d. h. rvalue. Diesem Exemplar kann natürlich nichts zugeordnet werden. Ich verstehe nicht, wie operator= dies ändern soll.

 
Sergei Vladimirov:
Und das letzte Beispiel verstehe ich immer noch nicht. Durch Überladen des "="-Operators in der Klasse A wird this[0] von rvalue zu lvalue... Ich weiß nicht, wie. Ist das eine Art MCL-Funktion, bei den Profis gibt es ein solches Verhalten nicht.fxsaber, wie sind Sie überhaupt zu diesem Konstrukt gekommen? Ich meine Überlastung = in A. Oder durch Versuch und Irrtum?
Das habe ich mit vollem Verständnis getan. Sonst hätte ich so etwas bestimmt nicht geschrieben.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Bibliotheken: TypeToBytes

fxsaber, 2016.09.21 21:25

Veröffentlicht. Jetzt funktioniert für jede Variable (Struktur oder Standardtyp) nicht nur das Lesen wie bei Array, sondern auch das Schreiben:

_W(AnyVariable)[Pos] = AnyValue; // Записывает по байтовому смещению Pos значение AnyValue в переменную AnyVariable

Das war vor der Implementierung nicht leicht zu erraten - wahrscheinlich erwies es sich als guter Test für durchschnittliche OOP-Kenntnisse: Ich kenne nur die Klassiker für Klassen.

Wenn jemand etwas Ähnliches kennt, bitte den Link zur Aufklärung weitergeben.


 
fxsaber:
Das habe ich mit vollem Verständnis getan. Sonst hätte ich so etwas nicht geschrieben.

Sie verstehen also alles, können es aber nicht aussprechen? )) Ich verstehe.
 
Sergei Vladimirov:
Sie verstehen also alles, können es aber nicht aussprechen? )) Ich verstehe.
Ja, das kommt vor. Ich kann es nicht formulieren. Deshalb fordere ich die Entwickler auf, es richtig zu machen.
 
Sergei Vladimirov:

Wo? Genau hier?

this[0] = new A;

Hier gibt operator[] den in der Zelle Data[0] enthaltenen Wert zurück. Kein Verweis auf diese Zelle oder ein Zeiger auf sie, sondern nur eine Kopie des in dieser Zelle enthaltenen Wertes, d. h. rvalue. Diesem Exemplar kann natürlich nichts zugeordnet werden. Ich verstehe nicht, wie operator= in der Klasse A dies ändert.

Vielleicht geht es um die gleichen Probleme mit Verweisen in MCL.

A* operator []( const int Pos )
{
    return(this.Data[Pos]);
}

Es könnte sich herausstellen, dass es nicht der Wert ist, der hier zurückgegeben wird, sondern ein Verweis darauf, d.h. lvalue... Aber warum kann ihm nicht gleich ein neuer Wert zugewiesen werden, warum brauchen wir operator= in der Klasse A? Ich verstehe das nicht...

 
Sergei Vladimirov:

Wahrscheinlich geht es in MKL um dieselben Referenzmaterialien.

Es könnte sich herausstellen, dass hier kein Wert zurückgegeben wird, sondern ein Verweis auf ihn, d.h. lvalue... Aber warum kann ihm nicht gleich ein neuer Wert zugewiesen werden, warum brauchen wir operator= in der Klasse A? Ich verstehe das nicht...

Wenn Sie einem rvalue-Zeiger etwas zuweisen, wird der Zeiger automatisch in eine Objektreferenz umgewandelt. Nun, wir sind alle gestern geboren!

Ich habe den Desk schon lange danach gefragt, aber sie sagen, es sei nicht sicher, obwohl es nicht gefährlicher ist als die Übergabe von Argumenten per Referenz.

 
Alexey Navoykov:

Wenn Sie einem rvalue-Zeiger etwas zuweisen, wird der Zeiger automatisch in eine Objektreferenz umgewandelt. Das ist wie gestern, nicht wahr?

Jetzt verstehe ich es, danke.
 
Die Möglichkeit, Zeilen in der Multifunktionsleiste zu markieren, ist nicht vorhanden. Ich kann sie zwar ansehen, aber nicht markieren.
 
Was zum Teufel ist das?
2016.09.26 14:02:11.858 Books   invalid book item[RTS-12.16,buy,98090.00000,-16]
 

Typ-Fehlanpassung

MqlTick time_msc - lang.

CopyTicks von - ulong.