forked from rosh/MQL5Book
71 lines
1.6 KiB
MQL5
71 lines
1.6 KiB
MQL5
//+------------------------------------------------------------------+
| |||
//| StructsComposition.mq5 |
| |||
//| Copyright 2021, MetaQuotes Ltd. |
| |||
//| https://www.mql5.com |
| |||
//+------------------------------------------------------------------+
| |||
| |||
struct Inclosure
| |||
{
| |||
double X, Y;
| |||
};
| |||
| |||
struct Main
| |||
{
| |||
Inclosure data;
| |||
int code;
| |||
};
| |||
| |||
struct Main2
| |||
{
| |||
struct Inclosure2
| |||
{
| |||
double X, Y;
| |||
}
| |||
data;
| |||
int code;
| |||
};
| |||
| |||
struct Main3 : Inclosure
| |||
{
| |||
int code;
| |||
string xxx;
| |||
};
| |||
| |||
struct Base
| |||
{
| |||
const int mode;
| |||
string s;
| |||
Base(const int m) : mode(m) { }
| |||
};
| |||
| |||
struct Derived : Base // 'Base' - wrong parameters count
| |||
{
| |||
double data[10];
| |||
Derived() : Base(1) { }
| |||
};
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| Script program start function |
| |||
//+------------------------------------------------------------------+
| |||
void OnStart()
| |||
{
| |||
Main m = {{0.1, 0.2}, -1}; // aggregate initialization
| |||
m.data.X = 1.0; // member-wise access
| |||
m.data.Y = -1.0;
| |||
| |||
Main2 m2 = {{0.1, 0.2}, -1}; // aggregate initialization
| |||
m2.data.X = 1.0; // member-wise access
| |||
m2.data.Y = -1.0;
| |||
| |||
Main3 m3 = {0.1, 0.2, -1};
| |||
m3.X = 1.0;
| |||
m3.Y = -1.0;
| |||
| |||
Inclosure in = {10, 100};
| |||
m3 = in;
| |||
| |||
Print(sizeof(Main)); // 20
| |||
Print(sizeof(Main2)); // 20
| |||
Print(sizeof(Main3)); // 20
| |||
}
| |||
//+------------------------------------------------------------------+
|