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

 
Igor Makanu:

спорить не буду

решил все таки описать проблему которую обсуждаем, кстати поведение MQL все больше на поведение C# стало похожим, код не скомпилировался

//+------------------------------------------------------------------+
class A
{
private:
   int               count;
public:
                     A():count(0) {}
   static void       inc()        { count++; }

};

A a;
//+------------------------------------------------------------------+
void OnStart()
{
   a.inc(); //code generation error 
   A::inc();
   
}
//_______________________________________________________________________

вот обьвил метод inc() - он работает с защищенным полем

если я добавил модификатор статик - где должен компилятор прекратить проверку?  - я же принял решение что мне нужна точка входа в обьект за пределами видимости? 

 
Igor Makanu:

если написал static метод/поле  или применил :: - на компилятор не надейся

Баги случаются. Пишу код, как и раньше: this, ::, const, static, private, public, protected ставится везде, где это только можно.

Мне это нужно в первую очередь для быстрого понимания своего кода. Во вторую - чтобы компилятор помогал во время написания. А он, действительно, хорошо помогает.


Вчера столкнулся первый раз с такой ситуацией. Написал код на 5Кб, часть из которого было копи-пастой из разных работ. И при первой же компиляции не оказалось ни одной ошибки или предупреждения. Удивился.

 
Igor Makanu:

решил все таки описать проблему которую обсуждаем

//+------------------------------------------------------------------+
class A
{
private:
   int               count;
public:
                     A():count(0) {}
   static void       inc()        { count++; } // Здесь ошибка, о которой компилятор сейчас не сообщает.

};
 
Igor Makanu:

решил все таки описать проблему которую обсуждаем, кстати поведение MQL все больше на поведение C# стало похожим, код не скомпилировался

вот обьвил метод inc() - он работает с защищенным полем

если я добавил модификатор статик - где должен компилятор прекратить проверку?  - я же принял решение что мне нужна точка входа в обьект за пределами видимости? 

У Вас переменная count не статическая.

Как статическая функция узнает, какому объекту эта переменная принадлежит?

 
Koldun Zloy:

У Вас переменная count не статическая.

Как статическая функция узнает, какому объекту эта переменная принадлежит?

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

ладно, проехали, ибо пофиг - написал 2 раза одно и то же за день https://www.mql5.com/ru/forum/1111/page2564#comment_13249284

 
Igor Makanu:

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

Вот Вы где это прочитали?

Сами придумали, и повторяете без остановки?

 
Andrey Barinov:

Вот Вы где это прочитали?

Сами придумали, и повторяете без остановки?

я не придмал, это мое мнение... как и в принципе закрыть все работу со статиками только в пределах статиков как в С# - тогда точно не будет ни вопросов ни ошибок ;)

 
Slava:

Несколько вопросов по платформе:

1. Будет ли добавлен допустимый диапазон торговли для ВП через MOEX (например, EURRUB_TOM)? Сейчас нельзя точно узнать, будет ли выставлена лимитка, т.к. нет доступа к диапазону (макс. и мин. возможным ценам). Добавьте, пожалуйста.

2. Можно ли добавить в терминал и метаэдитор автосохранение состояния каждые N минут? Очень не хватает, т.к. при внезапном разрыве связи возвращаешься к состоянию на момент старта программы с потерей всех изменений! Очень напрягает!

 

Ребята, MQ, у Вас с хранилищем все в порядке? Коммитит секунд 10-20 один файл. Раньше моментом все было...

Добавлено: иногда просто виснет коммит...

 
В индикаторе на чарте с кастом-инструментом вызов функции CopyBuffer (с хэндлом обычной машки для реальных символов, например для EURUSD) возвращает ошибку 4806. Кастом символ построен по формуле XAUUSD/31.1035*USDRUB. Тот же пользовательский индикатор с тем же настройками работает нормально на реальном чарте (например, на XAUUSD, GBPUSD и т.д.). В чем может быть проблема?
Причина обращения: