Rückgabe Struktur aus einer Funktion

 

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
 

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  ;)

 

Super, danke dir für die schnelle Hilfe.

Das mit den Einzelwerten war mir nicht bewusst.

Funktioniert einwandfrei ;)

 
Steht alles im Zauberbuch und F1 gelangt man direkt dorthin!