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

 

Важная деталь: перенос через обратный слеш \ изначально (в C++) был задуман именно как слитный\неразрывный\без пробела перенос, потому что перенос с пробелом можно и через многострочный комментарий сделать:

                                                          //Ожидаемый результат: 
#define MACRO1 unsigned/*    //(1)//перенос через пробел  //unsigned int
*/int
#define MACRO2 unsigned\     //(2)//неразрывный перенос   //unsignedint
int

То, что сам неразрывный перенос (2) в MQL с ошибкой работает ранее уже обсуждалось, но выяснилось, что перенос через многострочный комментарий (1) вообще не работает:

#define MACRO1 unsigned/*
*/int 

Ошибка: 'int' - unexpected end of program

 
template <typename T, int Upd_ = CovarianceUpdate>
class Weighted : public Base
{

protected:

   typedef Weighted<T,  Upd_>     MyT_; 

   struct  upd_imp<T,  MyT_>; 

};

Доброго времени. Разбираю некий код на С++
И столкнулся с недопониманием.
Подскажите по шаблонной парадигме ООП С++.

MyT_ что это будет?
Созданный объект класса, или пользовательский тип класса ?
Просто не пойму, нафига создавать новый тип класса, если класс и так является типом.

Или это реально тавтология кодера? )) 

 
Roman #:

MyT_ что это будет?

В данном случае:

typedef Weighted<T,  Upd_>     MyT_;

сводится к

#define MyT_    Weighted<T,  Upd_>

Соответственно вопрос: а зачем здесь typedef ? сводится к вопросу: а зачем здесь #define ?

 
A100 #:

В данном случае:

сводится к

Соответственно вопрос: а зачем здесь typedef ? сводится к вопросу: а зачем здесь #define ?

Спасибо.

 
enum UpdateType
{
    CovarianceUpdate = 1,
    SquareRootUpdate = 2
};

template <typename T,  int Upd_ = CovarianceUpdate>
class Weighted
{
protected:
        
   typedef Weighted<T, Upd_>    MyT_;   

};



А в mql5 параметр шаблона int с инициализацией по умолчанию, почему-то вызывает ошибку компиляции.

'int' - unexpected token

Если в шаблоне вместо int подставить имя перечисления  UpdateType, то та же ошибка.

'UpdateType' - unexpected token



Будет ли ошибка при создании пользовательского типа класса непонятно, 

typedef Weighted<T, Upd_>    MyT_;

так как туда ещё не доходим из за ошибки параметра шаблона. 

 
template <typename T, class Estimator_>
struct upd_imp;

И тип class в параметре шаблона вызывает ошибку

'class' - unexpected token

Как я понял, любые явные типы в параметре шаблона выдают ошибку.
Так должно быть в mql5 ?

 
Roman # :

И тип class в параметре шаблона вызывает ошибку

Как я понял, любые явные типы в параметре шаблона выдают ошибку.
Так должно быть в mql5 ?

Шаблоны C++ еще не полностью реализованы в MQL. Далеко отсюда.
 
A100 #:
Ошибка при компиляции: А раньше (пока не обновился) нормально все было

В последнем build 3886 ситуация с комментариями ухудшилась - ошибка при выполнении:

#define MACRO1 /*
#define MACRO2 */
void OnStart()
{
#ifdef MACRO2
    Print( 2 );
#else
    Print( 1 );
#endif
}

Результат:    2

Ожидалось: 1

Дополнительный минус в том, что подсветка MetaEditor правильно отрабатывает комментарий, т.е. компиляция и подсветка действуют сами по себе, а ожидалась их работа в едином ключе

Предыдущие сообщения по теме:

https://www.mql5.com/ru/forum/1111/page3373#comment_48873906

https://www.mql5.com/ru/forum/1111/page3373#comment_48876487

https://www.mql5.com/ru/forum/1111/page3373#comment_48885444
 
Куча проблем с впс. Ошибка 10054 и написано миграция не состоялась. То есть впс не подключен но они есть и торгует только евробакс и ничего больше. Даже если ордер открывать на другом графике. Как его для начала выключить то . А уж потом как включать. Денежка списана в мкл за вес но вас нет ещё и терминал сломан.
 
         FileSeek(filehandleCVS,0,SEEK_END);
         uint x=FileWriteStruct(filehandleCVS,CurrStep);

При записи в CVS файл он перезаписывается. Хотя в тот же текстовый добавляется в конец. Возможно?