Ошибки, баги, вопросы - страница 1736
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
может кому интересно будет, ответ сервисдеск:
Мне очень интересно! Прошу пояснить ответ Сервисдеска на примере.
& == GetPointer(). * - ничего не изменилось.
Мне очень интересно! Прошу пояснить ответ Сервисдеска на примере.
& == GetPointer(). * - ничего не изменилось.
может кому интересно будет, ответ сервисдеск:
Я кстати на днях отправил им предложение насчёт введения указателей на любые типы данных. А это это нелепое ограничение уже достало.
было бы неплохо ввести перегрузку оператора *, а то без него не получается реализовать идентичность с STL, так же неплохо бы ввести typedef в полной мере, а не только на calback`и
какой пример нужен?
Того, что Вам хочется из * и &. Что-нибудь простое, но наглядное. Чтобы видеть удобство.
Того что мне хочется я уже написал выше.
Пример с оператором '&' можете сами придумать, где используете GetPointer(...), это по сути краткая форма
Пример с оператором '*' - не знаю поможет вам или нет в понимании:
{
int m_value;
public:
Iterator(const int val) : m_value(val) { }
int operator*() { return m_value; }
};
int main(int argc, char **argv) {
Iterator *_it = new Iterator(5);
int _val = **_it;
//---
return 0;
}
это работает в С++, но в MQL придется делать гетер на получение m_value.
Добавьте в Справку, что для перерисовывания OBJ_CHART ChartRedraw(MainChartID) не подходит. Нужен ChartRedraw(ObjChartID).
Поэтому пример из Справки некорректен.
Прошу не ограничивать масштаб N <= 5 (размер области под бар = 2^N).
Это нужно (и стало целесообразно), чтобы можно было разглядывать тиковую историю подробнее.
{
public:
const int a;
A( int c = 0 ) : a(c) {}
virtual int f()
{
Print(__FUNCTION__);
return(this.a);
}
};
class B : public A
{
public:
const int b;
B( int c = 0 ) : A(c), b(this.f()){}
virtual int f()
{
Print(__FUNCTION__);
return(this.a);
}
};
void OnStart()
{
B b;
A* a = new B;
delete a;
}
Результат
2016.10.18 09:35:01.981 Test14 (GBPUSD,M1) B::f
По какой причине выдает B::F, а не A::f? Срипт написан так, что вызов f происходит ДО выполнения тела конструктора (жирным выделил). Но к этому моменту уже вызван конструктор базового класса A. Поэтому this.f(), вроде, должен относиться именно к базовому классу, пока еще не выполнился B-конструктор. Прошу пояснить, в чем ошибка в рассуждениях/преставлениях.