Rückgabe Struktur aus einer Funktion

Einloggen oder registrieren, um einen Kommentar zu schreiben
Newcomer2019
21
Newcomer2019  

Hallo,


ich möchte aus einer Funktion eine einfache Struktur zurückgeben, bekomme es jedoch einfach nicht gebacken.

Im Hauptprogramm erstelle ich eine Struktur mit zwei Werten:

useful_name.val1 und useful_name.val2 und gebe beiden den Wert 0.


In einem kleinen Unterprogramm möchte ich jetzt val1 = 1 und val2 = 2 setzen und die Struktur useful_name zurückgeben.


#include "D:\Program Files (x86)\MetaTrader5\MQL5\Experts\MB\Subfunctions\Sub_return_struct4.mq5"  


void OnStart()
  {


   struct Info
     {
      int               val1;
      int               val2;
     };

   struct struct_1: Info
     {
     };

   struct_1 useful_name;

   useful_name.val1  = 0;
   useful_name.val2  = 0;



   int c = Sub_return_struct4(useful_name);

  }
//+------------------------------------------------------------------+



int Sub_return_struct4(int &useful_name)
  {

   useful_name.val1  = 1;
   useful_name.val2  = 2;


   return(useful_name);

  }

//+------------------------------------------------------------------+


Egal was ich ausprobiere, ich bekomme immer eine Fehlermeldung ^^.

Ich hoffe es ist klar was ich machen möchte.


Vielen Dank vorab.

Dateien:
Error.jpg 38 kb
Carl Schreiber
Moderator
9901
Carl Schreiber  

In MQL können Funktionen/Methoden direkt nur Einzelwerte zurückgeben, Arrays und auch Strukturen werden nur per Referenz übergeben:

// einfaches Beispiel:
struct tst {
   int i0,i1;
};

bool soGehts(tst &s) {
   s.i0 = 0;
   s.i1 = 1; 
   ...
   return(true);
}

...
  tst x;
  if ( soGehts(x) ) {
     int i0 = x.i0;
         i1 = x.i1;
  }

Schau Dir die Beispiele für Arrays an - F1  ;)

Newcomer2019
21
Newcomer2019  

Super, danke dir für die schnelle Hilfe.

Das mit den Einzelwerten war mir nicht bewusst.

Funktioniert einwandfrei ;)

Carl Schreiber
Moderator
9901
Carl Schreiber  
Steht alles im Zauberbuch und F1 gelangt man direkt dorthin!
Einloggen oder registrieren, um einen Kommentar zu schreiben