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

 
typename генерирует строку во время компиляции, именно поэтому и необходимо "тянуть хвосты".


Вы хотите получить реальный тип объекта по указателю?

Что-то типа функции:

string GetPointerTypename(void *ptr);
 
Ilyas:
typename генерирует строку во время компиляции, именно поэтому и необходимо "тянуть хвосты".


Вы хотите получить реальный тип объекта по указателю?

Что-то типа функции:

string GetPointerTypename(void *ptr);

Да. Вот

Stanislav Korotky:
Я бы хотел сделать поизящнее. Но как? В MQL typename(this) в виртуальном базовом методе возвращает базовый класс. Вот в C++ typeid(*this).name() в базовом виртуальном методе возвращает актуальный класс объекта.

 
fxsaber:
Это только в Публикциях профиля фича?
Починили днем. А сейчас снова фича возникла.
 

Что-то никак не сображу

int a=1;//a1
int b=2;//b1
int aa(int a, int b)
{
return(a+a+b+b);
}

 одно из a и b в return должны быть внешние //a1 и //b1. Через this не идет.

 
Yuriy Asaulenko:

a + ::a + b + ::b

Но вообще за такую практику надо по рукам бить.

 
Комбинатор:

a + ::a + b + ::b

Но вообще за такую практику надо по рукам бить.

Спасибо.) Книги по С++ под рукой нет. Но визуально помнится, там вроде через this было. Подзабыл наверное. Применять для этих целей ранее не приходилось. Что-ж теперь, везде переменный менять -счас.

А вообще, оно для этого и предусмотрено. Так что - не правы. Злоупотреблять не стоит. 

 

При перетаскивании (CHARTEVENT_OBJECT_DRAG) мышью графического объекта OBJ_CHART сбрасывается текущий интервал отображения в OBJ_CHART.

Прошу убрать в следующем билде данный сброс.

 

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

Ошибки, баги, вопросы

Ilyas, 2016.10.18 09:24

Почему список инициализации Вы не включаете в тело? Образно говоря, объект класса (в том числе его this) инициализируется  на знаке ':'
Почему тогда так?
class A
{
  const int a;
  
  A() : this.a(0) {} // 'this' - struct member undefined && '.' - member(s) initialization expected
//  A() : a(this.a) {} // no problem
};
 

Идентификатор

Описание

Тип свойства

CHART_COMMENT

Текст комментария на графике

string

CHART_EXPERT_NAME

Имя эксперта, запущенного на графике с указанным chart_id

string

CHART_SCRIPT_NAME

Имя скрипта, запущенного на графике с указанным chart_id

string

Добавьте жирным read-only в Справке.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Очень много времени потратил на локализацию. Советник

class CHARTOBJECT
{
public:
  const string Name;
  const long Chart;

  int GetSubWindow( void ) const
  {
    const ulong StartTime = GetMicrosecondCount();
    
    const int Res = ObjectFind(this.Chart, this.Name);
    
    Print((string)(GetMicrosecondCount() - StartTime) + " mcs.");

    return(Res);
  }

  CHARTOBJECT( const ENUM_OBJECT object_type, const long chart_id = 0  ) :
               Name((string)MathRand()), Chart(chart_id)
  {
    ObjectCreate(this.Chart, this.Name, object_type, 0, 0, 0);
  }

  ~CHARTOBJECT( void )
  {
    if (this.GetSubWindow() != -1)
      ObjectDelete(this.Chart, this.Name);
  }
  
  long GetProperty( const ENUM_OBJECT_PROPERTY_INTEGER Property, const int Modifier = 0 ) const
  {
    return(ObjectGetInteger(this.Chart, this.Name, Property, Modifier));
  }
};

CHARTOBJECT Chart(OBJ_CHART);
CHARTOBJECT* Bitmap;

void OnInit()
{
  Bitmap = new CHARTOBJECT(OBJ_BITMAP_LABEL, Chart.GetProperty(OBJPROP_CHART_ID));
}

void OnDeinit( const int Reason )
{
  Bitmap.GetSubWindow();
  
  delete Bitmap;
}

После того, как его удалите с чарта, будет вывод в лог

2016.10.22 19:35:51.362 Test9 (AUDCAD,M1)       Abnormal termination
2016.10.22 19:35:48.351 Test9 (AUDCAD,M1)       3005619 mcs.

Три секунды он удалялся и вылетел. Воспроизводится только в релиз-варианте. При дебаге все нормально.

Просьба подтвердить у себя. В режиме скрипта воспроизвести не получилось. Только советник.