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

 

A100:

virtual int Compare(const CObject *node,const int mode=0) const;

 


Вы правы. Коротко и ясно, без лишних слов. Выложил действующий код. 

Файлы:
sort.mq5  3 kb
 
Stanislav Korotky:

В результате, внутри этого метода typename правильно определяет переданный тип, например, как int, а уже внутри конструктора B typename равен string. 

результат typename всегда имеет тип string, иными словами typename можно представить условно как функцию
string typename( X );
 
A100:
результат typename всегда имеет типа string, иными словами
Я не про то. typename возвращает строку с названием типа. Внутри шаблонизированного метода класса строка с типом равна "int", а внутри вызванного оттуда конструктора - строка содержит "string".
 
Stanislav Korotky:
Я не про то. typename возвращает строку с названием типа. Внутри шаблонизированного метода класса строка с типом равна "int", а внутри вызванного оттуда конструктора - строка содержит "string".
class A { public:
template<typename T>
        A( T ) { Print( typename( T )); }
};
class B { public:
template<typename T>
        void f( T t ) { A a( t ); } //вызываем A::A(...)
};
void OnStart()
{
        B b;
        int i = 0;
        b.f( i );
}
Результат: int
 

Компилятор не сообщает об ошибке при отсутствии #endif

#property library
#ifndef MACRO
#define MACRO

Желательно, чтобы сообщал, иначе трудноуловимые ошибки
 
A100:
Результат: int
Да, такой минимальный пример работает как надо, а более сложный исходник - нет. Написал в СД.
 
CoderMQ4:

Ребята, скажите это баг Маркета или это абсолютно нормально?


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

Или у меня неправильное понимание виртуальной машины

 

Вызов виртуальной функции в объекте-экземпляре производного класса приводит к вызову этой функции из базового класса, а не производного.

 
Ilya Malev:

Вызов виртуальной функции в объекте-экземпляре производного класса приводит к вызову этой функции из базового класса, а не производного.

В конструкторе так всегда. Почему? -> google C++ (добавьте к строке запроса слово конструктор)
 
A100:
В конструкторе так всегда. Почему? -> google C++ (добавьте к строке запроса слово конструктор)

Спасибо, не знал) Хорошо бы это и в справку по MQL5 добавить, ну там где про виртуальные функции и конструкторы. Ведь не во всех языках так.

Причина обращения: