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

 
fxsaber:

Конструктор только из-за того, что без него const-поле не инициализировать. Структура или класс - без разницы. Главное, чтобы был объект.

Дело ваше.


 
Vict:

Дело ваше.

Не думал, что const-поля противоречат общей практике.

 
Обновлена и дополнена информация по багам в приоритетах вызовов перегруженных шаблонных функций.
 
fxsaber:

Не думал, что const-поля противоречат общей практике.

Нет )), просто подумал, что надо вот прям на структурах. Зачем тогда какие-то костыли? Вполне элегантно, сделать массив, обойти в цикле и сделать сет(). Если в логике будет ошибка (повторный вызов где-то), то получите аварийное завершение.

class A {
    int a;
public:
    A() : a(INT_MAX) {}
    void set(int aval) {if (a != INT_MAX) abort(); a = aval;}
    int get() {return a;}
};
 
Vict:

Не думаю, что со своим уставом стоит лезть в чужое болото.

 
Sergey Dzyublik:

Не думаю, что со своим уставом стоит лезть в чужое болото.

Наркоман? fxsaber попросил совета, я ответил.

 
fxsaber:

По-моему, поля, которые после создания никогда не будут (и не должны) меняться, логично прописывать const.

Нет. Константные поля делают в очень редких случаях. И не для простых типов.

 
Vict:

Наркоман? fxsaber попросил совета, я ответил.

Будьте попроще и к вам потянутся...

 
Koldun Zloy:

Нет. Константные поля делают в очень редких случаях. И не для простых типов.

Простой пример. Нужно иметь массив МАшек с заданными периодами.

Каждая МАшка - объект одного типа. Понятно, МАшка однозначно задается периодом. Поэтому логично его сделать const.


ЗЫ В других языках делают просто массив указателей. В MQL такой свободы нет.

 
Koldun Zloy:

Нет. Константные поля делают в очень редких случаях. И не для простых типов.

Вы знаете как устроен оптимизатор и компилятор MQL?
Откуда такая уверенность, что const поля простых типов не используется для этих целей?

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