CSortedMap with Structure TValue Error - objects are passed by reference only?

 

Hi,

what's going wrong here?

struct ownType {
   int a;
};

CSortedMap<double, ownType> ownObject;

=> Error: 'ownType' - objects are passed by reference only HashMap.mqh


Thanks...

 
Tiroler63:

Hi,

what's going wrong here?

=> Error: 'ownType' - objects are passed by reference only HashMap.mqh


Thanks...

  1. Wir können hier deutsch reden :)
  2. Was willst Du mit: CSortedMap<string, ownType> ownObject; ???
  3. logisch wäre:
    struct ownType {
       int a;
    };
    ownType myVarOwnTyp;

 
Carl Schreiber #:
  1. Wir können hier deutsch reden :)
  2. Was willst Du mit: CSortedMap<double, ownType> ownObject; ???
  3. logisch wäre:


Hi Carl,

ich brauche eine sortierte Liste mit einem eigenen Structure Type. So wie in C++ map<double, ownType>.

 
Tiroler63 #:

Hi Carl,

ich brauche eine sortierte Liste mit einem eigenen Structure Type. So wie in C++ map<double, ownType>.

Da musst Du Dir die Sortierfunktion selber schreiben. MQL5 bietet nur das Sortieren von Arrays (jeden Typs): https://www.mql5.com/de/docs/array/arraysort:&nbsp; "Sortiert ein mehrdimensionales Array aufsteigend in der ersten Dimension."

Dann also

struct ownType {
   int a;
};
ownType myVarOwnTyp[];

So kriegst Du einen Array Deiner Struktur. Zugriff sieht so aus:

myVarOwnTyp[i].a
Documentation on MQL5: Array Functions / ArraySort
Documentation on MQL5: Array Functions / ArraySort
  • www.mql5.com
ArraySort - Array Functions - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 
Carl Schreiber #:

Da musst Du Dir die Sortierfunktion selber schreiben. MQL5 bietet nur das Sortieren von Arrays (jeden Typs): https://www.mql5.com/de/docs/array/arraysort:&nbsp; "Sortiert ein mehrdimensionales Array aufsteigend in der ersten Dimension."

Dann also

So kriegst Du einen Array Deiner Struktur. Zugriff sieht so aus:

Danke!

1. arraysort glaub ich funktiniert doch nur mit Indizes also Integer, ich möchte aber nach Double oder Strings sortieren können.

2. CSortedMap<double, ownType> wäre optimal, ich verstehe nur nicht was ich falsch mache?

 
Ich verstehe nicht, warum Du auf CSortedMap<double, ownType> bestehst, wo hast Du das her? Lies mal über die Variablendeklaration: https://www.mql5.com/de/docs/basis/variables
Documentation on MQL5: Language Basics / Variables
Documentation on MQL5: Language Basics / Variables
  • www.mql5.com
Variables - Language Basics - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 
Vielleicht meintest Du ja das (schaut aber auch anders aus): https://www.mql5.com/de/docs/basis/oop/templates
Dokumentation zu MQL5: Grundlagen der Sprache / Objektorientiertes Programmieren / Funktionstemplates
Dokumentation zu MQL5: Grundlagen der Sprache / Objektorientiertes Programmieren / Funktionstemplates
  • www.mql5.com
Funktionstemplates - Objektorientiertes Programmieren - Grundlagen der Sprache - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 
Carl Schreiber #:
Vielleicht meintest Du ja das (schaut aber auch anders aus): https://www.mql5.com/de/docs/basis/oop/templates

Ja danke, aber ich brauche eine Liste geordnet nach Doubles, so wie 

map<double, ownType>

Deshalb kam ich auf 

CSortedMap<double, ownType>

So wie es aussieht geht das aber nur mit einfachen Datentypen.

Schade...