Скачать MetaTrader 5

Форвардные декларации для классов

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes
Админ
25031
Renat Fatkhullin 2010.08.17 12:34 

В анонсе 306 билда забыли указать, что включены форвардные декларации классов.

Этот механизм позволяет ссылаться на еще не описанные классы, что упрощает написание сложных программ.

Вот простой пример:

class SecondClass;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class FirstClass
  {
public:
   string            symbol;
   SecondClass      *value;

                     FirstClass() { symbol="EURUSD"; value=new SecondClass; }
                    ~FirstClass() { delete value;          }

   string            Timeframe(void) { return(symbol+" "+IntegerToString(value.period)); }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class SecondClass
  {
public:
   int               period;

                     SecondClass() { period=1; }
                    ~SecondClass() { }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   FirstClass test;
//---
   test.value.period=5;
//---
   Print("Result: ",test.Timeframe());  // должно получиться "EURUSD 5"
  }
Vladimir Batrudinov
4928
Vladimir Batrudinov 2010.08.17 12:37  
А я то это жду в следующем билде... :)

Простак
315
Простак 2010.08.18 01:05  
Renat:

В анонсе 306 билда забыли указать, что включены форвардные декларации классов.

Этот механизм позволяет ссылаться на еще не описанные классы, что упрощает написание сложных программ.

Вот простой пример:

Подразумевается ли при этом, что forward'ные декларации введены таким образом, что ранее заявленная проблема, связанная с атакой с подсовыванием фейковых классов, устранена и не может уже возникнуть?
MetaQuotes
Админ
25031
Renat Fatkhullin 2010.08.18 01:17  
simpleton:
Подразумевается ли при этом, что forward'ные декларации введены таким образом, что ранее заявленная проблема, связанная с атакой с подсовыванием фейковых классов, устранена и не может уже возникнуть?

Проблемы не было, а было заявлено, что ввод форвардной декларации может привести к потенциально возможной проблеме. Ранее существовавшая система контроля вообще не позволяла возникнуть такой ситуации.

На текущий момент система контроля переписана на новый лад, что позволяет полностью контролировать кастинг с учетом позднего определения классов.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий