Новая версия платформы MetaTrader 5 build 2980: Push-уведомления о торговых операциях - страница 11

 
A100:

Правильная ошибка, потому что в этом контексте ожидается действие с ранее объявленной переменной B::Total. Если хотите вызвать именно функцию, то нужно явно указать A::Total()

Просьба подсказать, как правильно в этом случае?

template <typename T>
class A
{
public:
  T Total() { return(0); }
};

class B : public A<int>
{
  int Total;

public:
  B()
  {
    this.A<int>::Total();
  }
};
 
fxsaber:

Просьба подсказать, как правильно в этом случае?

я убрал this, осталось A<int>::Total();

откомпилировалось без ошибок.

 
mktr8591:

я убрал this, осталось A<int>::Total();

откомпилировалось без ошибок.

Спасибо. Не знаю, является ли ошибкой, что с this не компилируется.

 
fxsaber:

Спасибо. Не знаю, является ли ошибкой, что с this не компилируется.

Ошибка, но с this и более простой пример до сих пор не компилируется

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как грамотно и правильно собрать сова? [стиль MQL5]

A100, 2014.02.02 11:04

Нужно учитывать специфику MQL5, где this не всегда применим, например 
class A {
public:
        void f();

        int x;
};

void A::f()
{
        this.A::x = 0;
}
не компилируется, и СервисДеск считает что это правильно
но в Вашем случае я бы не this убрал, а <int> (одного вполне достаточно)
 
A100:

в Вашем случае я бы не this убрал, а <int> (одного вполне достаточно)

Так не работает, к сожалению.

 
fxsaber:

Так не работает, к сожалению.

template<typename T>
class A {
public:
        T Total() { return NULL; }
};
class C : public A<int> {}; //<int> фигурирует только один раз
class B : public C {
        int Total;
public:
        B() { this.C::Total(); }
};
Строго говоря это не одно и тоже, но чтобы проявились отличия - нужно ооочень постараться
 
A100:
Строго говоря это не одно и тоже, но чтобы проявились отличия - нужно ооочень постараться

Промежуточный класс - это, конечно, костыль.

 
fxsaber:

Промежуточный класс - это, конечно, костыль.

Вы предпочитаете везде таскать за собой эти многоэтажные дроби в треугольных скобках?

ObjectBase<ENUM_OBJECT_PROPERTY_INTEGER,ENUM_OBJECT_PROPERTY_DOUBLE,ENUM_OBJECT_PROPERTY_STRING,ObjectGroup,Group_Base>
Вообще костыль - это кривое неоптимальное решение через Ж, а у меня прямое оптимизирующее
 
A100:

Вы предпочитаете везде таскать за собой эти многоэтажные дроби?

КБ-работа не компилируется, только и всего. Разбираться в особенностях новых правил несколько утомляет, когда до этого все работало без запинок.

Библиотеки: TradeTransactions
Библиотеки: TradeTransactions
  • 2020.12.27
  • www.mql5.com
TradeTransactions: Автор: fxsaber...
 
fxsaber:

КБ-работа не компилируется, только и всего. Разбираться в особенностях новых правил несколько утомляет, когда до этого все работало без запинок.

Понимаю Вас - сам недавно с таким столкнулся (все коды основаны на базовом - а он перестал компилироваться - причем безнадежно), но нашел - сообщил Разработчикам об ошибке и ее даже уже исправили