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

 
Комичная ситуация
class B;

class A
{
protected:  
  int i;

public:  
  void operator =( const B* Value )
  {    
    this.i = Value.i;       // 'i' - protected member access error
    
    // А так можно!
    this.i = ((A*)Value).i; // и нет ошибки: cannot convert from const pointer to nonconst pointer    
  }
};

class B : public A {};


Думал, ситуация в обоих случаях будет одинаковая. Ан нет!

 
Так можно только внутри класса А. Как по мне все ок.
 

fxsaber:

Как по хендлу файла узнать его название?

Насколько я помню, никак
 
Комбинатор:
Так можно только внутри класса А. Как по мне все ок.

ошибка

    this.i = Value.i;       // 'i' - protected member access error

уже исправлена, пожалуйста подождите выхода нового билда.

 

ошибка

уже исправлена, пожалуйста подождите выхода нового билда.

им виднее. ошибка так ошибка
 

МетаEditor добавляет точку к имени файла

Последовательность действий:

  • В Проводнике создать Текстовый документ Test.txt
  • В MetaEditor открыть его через Файл\Открыть
  • Далее выбрать Файл\Сохранить как...


В результате имя файла будет Test2..txt вместо Test2.txt

Блокнот при прочих равных условиях не добавляет к имени файла лишних точек
 

fxsaber:

уже исправлена, пожалуйста подождите выхода нового билда.

Нужно смотреть как именно исправлена потому что в аналогичном случае компилятор Microsoft неспроста требует вынести реализацию метода (в данном случае operator =) за пределы класса

https://www.mql5.com/ru/forum/1111/page2001#comment_5679732

https://www.mql5.com/ru/forum/1111/page2001#comment_5680465

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.08.29
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

Вроде, это неправильное поведение языка, т.к. ограничивает возможности

struct A {};

class B
{
public:
  const A a;
  
  B( const A &in ) : a(in) // 'a' - constructor not defined
  {
  }
};


Мне нужно задать const-поле в виде структуры. Думал, оператор копирования прокатит, а компилятор вместо этого хочет конструктор, потому что по синтаксису похоже. Но это неправильно.

 
Неправильное сообщение об ошибке
struct A
{
  const int i;
};

void OnStart()
{
  A a1, a2;
  
  a1 = a2; // '=' - not allowed for objects with protected members or inheritance
}
 

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

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

fxsaber, 2017.05.19 22:35

TimeTradeServer может возвращать всякую ерунду. Например, значение меньше, чем TimeCurrent. Это сводит полностью на нет его практическое применение.

Если правильно понимаю идею, то TimeTradeServer при работающем терминале должен был вычислять прошедшее время, после получения TimeCurrent и прибавлять эту разность, своего рода эмулируя будущие значения TimeCurrent.

Сейчас же запустив советник

#define TOSTRING(A) #A + " = " + (string)(A) + "\n"

void OnInit()
{
  EventSetTimer(1);
}

void OnTimer()
{
  Comment(TOSTRING(TimeTradeServer()) + TOSTRING(TimeCurrent()));
}

можно увидеть любую ерунду

Обратите внимание на даты.


Так и возвращает TimeTradeServer локальное время. Еще раз прошу исправить на правильное поведение.
Причина обращения: