Ошибки, баги, вопросы - страница 1695

 
Alexey Kozitsyn:
Кстати, это иногда вводит в заблуждение... почему, если значение не заполняется, его нельзя указать как WRONG_VALUE, например?
Сам наступал на эти грабли. Не могу сказать )
[Удален]  
Rashid Umarov:
Сам наступал на эти грабли. Не могу сказать )
Просто WRONG_VALUE ведь неявно приводится к типу любого перечисления...? Вот и привели бы))
 
Rashid Umarov:
В этом случае не нужно смотреть тип ордера - его там нет просто

Как я медленно печатаю... Пока правил свой пост ...

Alexey Viktorov:

Добавлено.

Ну вот... Пока печатал, Владимир дал исчерпывающий ответ. Спасибо понял. Как всегда не дочитал документацию...

Спасибо.

 

Как в индикаторе узнать свой хэндл на чарте? Через ChartIndicatorName не подходит, т.к. он возвращает короткое имя. А с таким же именем может уже быть уже запущен этот же индикатор с другими входными параметрами.

Мне это нужно, чтобы индикатор имел возможность удалить себя с чарта и расчетов. 

[Удален]  
fxsaber:

Как в индикаторе узнать свой хэндл на чарте? Через ChartIndicatorName не подходит, т.к. он возвращает короткое имя. А с таким же именем может уже быть уже запущен этот же индикатор с другими входными параметрами.

Мне это нужно, чтобы индикатор имел возможность удалить себя с чарта и расчетов. 

А если изменять короткое имя при создании?
 

Разве в моем прмере не должна наследоваться / браться метод из класса родителя ???  Как получить метод родителя в производных классах с целью дальнейшего его использования.

То есть класс родитель имеет методы "одлин, два, три" я хочу в потомке использовать только метод "два и три  " и при этом не видеть метод "один" а так же что бы "два и три" были доступны далее

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class test
  {
public:

   int rezult(void)
     {
      static int t=0;
      t++;
      return t;
     }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class test_end : public test
  {
public:
   virtual int       rezult(void);
  };

test_end go;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   go.rezult();
// 'rezult' - function must have a body TEst.mq4        42      7
  }
//+------------------------------------------------------------------+
 
Vladimir Pastushak:

Разве в моем прмере не должна наследоваться / браться метод из класса родителя ???  Как получить метод родителя в производных классах с целью дальнейшего его использования.

То есть класс родитель имеет методы "одлин, два, три" я хочу в потомке использовать только метод "два и три  " и при этом не видеть метод "один" а так же что бы "два и три" были доступны далее

Во-первых, не понятно, была ли попытка объявить метод виртуальным или нет. Если он должен быть виртуальным, то пишите virtual в базовом классе, а не в производном (потому что иначе базовые указатели будут ризолвится на базовый метод даже если положить в него экземпляр производного класса).

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

Наконец, чтобы скрыть метод от класса-наследника нужно ввести промежуточных класс, где этот метод переместить в область priivate или сразу сделать приватным в базовом (но зачем он тогда виртуальный?).

 
Stanislav Korotky:

Во-первых, не понятно, была ли попытка объявить метод виртуальным или нет. Если он должен быть виртуальным, то пишите virtual в базовом классе, а не в производном (потому что иначе базовые указатели будут ризолвится на базовый метод даже если положить в него экземпляр производного класса).

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

Наконец, чтобы скрыть метод от класса-наследника нужно ввести промежуточных класс, где этот метод переместить в область priivate или сразу сделать приватным в базовом (но зачем он тогда виртуальный?).

Вот пример

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class roditel
  {
public:

   virtual int one(void)
     {
      return 1;
     }
   virtual int two(void)
     {
      return 2;
     }
   virtual int three(void)
     {
      return 3;
     }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class naslednic_1 : public roditel
  {
public:
   virtual int       two(void);
   virtual int       three(void);
  };

naslednic_1 go;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   go.two();
// 'two' - function must have a body    TEst.mq4        42      7
  }
//+------------------------------------------------------------------+
 
Vladimir Pastushak:

Вот пример

Этот пример примерно такой же как и первый ;-). Мое письмо отквотили, но не читали? Чего Вы хотите добиться продекларировав методы по-новой в наследнике, но не определив их? Чтобы вызывать базовую реализацию не имея новой, не надо их упоминать в наследнике.
 
Stanislav Korotky:
Этот пример примерно такой же как и первый ;-). Мое письмо отквотили, но не читали? Чего Вы хотите добиться продекларировав методы по-новой в наследнике, но не определив их? Чтобы вызывать базовую реализацию не имея новой, не надо их упоминать в наследнике.

Есть 200 методов в родителе, на основе 10 методов из родительского класса создается класс потомок при дальнейшей работе я хочу видеть только 10 наследованных методов плюс те которые созданы в классе потомке, мне не нужны еще 190 методов которые никаким боком к текущему потомку не должны относиться. 

Например  есть базовый класс в котором описаны свойства фигур, ширина высота, углы, радиусы, цвета, площадь описаны все максимальные свойства.

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

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

 

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