Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 667

 
Roman Sharanov:

ниже в файле класса

Этот метод возвращает ошибку? Если да, то определите его в приватной секции. Можете целиком:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class newC
  {
private:
   int      m_var;
   double   varSqrt(void)           const { return ::MathSqrt(this.m_var); }
public:
                     newC(int var);
                    ~newC();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::newC(int var)
  {
      this.m_var = var;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::~newC()
  {
  }
//+------------------------------------------------------------------+

А можете вынести:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class newC
  {
private:
   int      m_var;
   double   varSqrt(void) const;
public:
                     newC(int var);
                    ~newC();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::newC(int var)
  {
      this.m_var = var;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::~newC()
  {
  }
//+------------------------------------------------------------------+
double newC::varSqrt(void) const
  {
   return ::MathSqrt(this.m_var);
  }
//+------------------------------------------------------------------+
 
neverness:

Ну, если это и бред, то проверенный опытом.

А не просто "теоретическая бредятина" !!!

Именно она.

Я в индикаторах спокойно использую любые типы массивов. И как буфер, и динамические, и статические.

А вот у вас всё не работает и опыт подсказывает вам, простите, бред какой-то.

 
Artyom Trishkin:

Этот метод возвращает ошибку? Если да, то определите его в приватной секции. Можете целиком:

А можете вынести:

А можете просто обращаться к приватному члену класса как this.m_var в пределах класса.
 
neverness:

Ну, если это и бред, то проверенный опытом.

А не просто "теоретическая бредятина" !!!

Никто не мешает использовать динамический массив при вычислениях.

Но!!! В процессе вычислений  процессор занят, и никакой записи в динамический массив не будет.

Поэтому все данные, которые придут в динамический массив во время вычислений автоматически игнорируются. (Иногда ставят защиту, и записывают их в буфер.)

Надеюсь это понятно?

Поэтому все данные по динамическим массивам разносятся по статическим массивам, чтобы не было потери данных в процессе работы процессора.

И поэтому все вычисления следует проводить в статических массивах !!!

Бред лютый, достойный войти в анналы форума.

 
Artyom Trishkin:

Именно она.

Я в индикаторах спокойно использую любые типы массивов. И как буфер, и динамические, и статические.

А вот у вас всё не работает и опыт подсказывает вам, простите, бред какой-то.

Хорошо.

Давайте проведем эксперимент.

Возьмем динамический массив, связанный с тиковыми данными, и задействуем процессор на этом массиве на пару часов.

И посмотрим, что мы запишем в этот массив в это время !? 

Такая постановка вопроса  Вам нравится? (Разумеется, без буфера)

 
neverness:

Хорошо.

Давайте проведем эксперимент.

Возьмем динамический массив, связанный с тиковыми данными, и задействуем процессор на этом массиве на пару часов.

И посмотрим, что мы запишем в этот массив в это время !? 

Такая постановка вопроса  Вам нравится? (Разумеется, без буфера)

Делайте. Потом код сюда.

 
Artyom Trishkin:

Этот метод возвращает ошибку? Если да, то определите его в приватной секции. Можете целиком:

А можете вынести:

да, вот так нужно было ,спасибо

 
Artyom Trishkin:

Делайте. Потом код сюда.

Разумеется.

Потом и посмотрим.

 

А еще вопрос.

Вот есть у меня в классе структура

Как мне ее по запросу вернуть во внешний код, который работает с этим классом?

 
Roman Sharanov:

А еще вопрос.

Вот есть у меня в классе структура

Как мне ее по запросу вернуть во внешний код, который работает с этим классом?

только описав саму структуру на глобальном уровне видимости переменных

затем в классе обьявите переменную типа структура

и во внешнем коде можете обьявить такую же переменную, но учтите, что если такая переменная будет обьявлена внутри OnTick(), то при каждом вызове OnTick() ,будет запускаться конструктор структуры, даже если Вы его не создавали - в MQL, по сути, нет различия между классами и структурами, единственно, что помню, это конструктор с параметром у структур созданных через new компилятор не пропустит

ну и итого... в классике ООП обычно за класс "не выходят " передавая внутренние элементы (поля класса), обычно все реализуется запросами к классу Get() ... Set()... ну тут дело вкуса

ЗЫ: .... используйте наследование, наследники имеют общие классы, посмотрите исходники классов из поставки МТ (папка include )