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

 
A100:

Ошибка при выполнении:
С чего вдруг размер массива стал равен 753790660 (вместо единицы) и как следствие память вдруг закончилась (4007) ? MT5\1881\32

MT5\1881\64
debug - все ок.
release - ошибка компиляции "Internal compiler error".

 

Ошибка при компиляции:

class A {
        int A::f() { return NULL; } //нормально
        A  *A::g() { return NULL; } //Error: object of 'A' cannot be returned, copy constructor 'A::A(const A &)' not found
};
MT5\1881\32
 
A100:

Зачем внутри class {} так (::) писать?

 

Ошибка при компиляции:

class A {
        int A::f();
        template <typename T>
        A*  A::g();
};
int A::f() { return NULL; } //нормально
template<typename T>
A*  A::g() { return NULL; } //Error: 'g' - function already defined and has different type
 
fxsaber:

Зачем внутри class {} так (::) писать?

А почему нет?

class A {
        void A::f() {} //нормально
};
Это примерно как this... хочу пишу... хочу - нет
 
A100:

А почему нет?

Это не причина.

Это примерно как this... хочу пишу... хочу - нет
this сильно помогает при чтении кода и помогает избегать ошибок в некоторых ситуациях.
 
fxsaber:

Это не причина.

Я не навязывают такую запись, а лишь констатирую ошибки (в том числе при выполнении, при том что компиляция была без ошибок) при её использовании, которых быть не должно
 
A100:
Я не навязывают такую запись, а лишь констатирую ошибку (в том числе при выполнении, при том что компиляция была без ошибок) при её использовании

Только интересуюсь, зачем так писать. Возможно, это в каких-то ситуациях оправдано. Например, чтобы сразу было понятно, к какому классу относится метод на экране монитора.

 
fxsaber:

Только интересуюсь, зачем так писать. Возможно, это в каких-то ситуациях оправдано. Например, чтобы сразу было понятно, к какому классу относится метод на экране монитора.

Я использовал такую запись в макросе (для обхода другой ошибки) чтобы запись внутри и вне класса имела одинаковый вид

//#define MACRO4
#define MACRO1 void A::f()
#define MACRO2             {}
#define MACRO3 MACRO1 MACRO2
class A {
#ifdef MACRO4
MACRO3
};
#else
MACRO1;
};
MACRO3
#endif
 

что то запутался, проверить нет возможности т.к. рынок стоит, вот исходные данные:

1. шаг цены 1
2. цена в стакане на уровне 19705 по ask
3. цена в стакане на уровне 19701 по bid
4. спред равен 4

сделки же у нас в это время проходят по BUY по 19704, а по SELL по 19702 ?
или они идут по тем же уровням где края стакана, т.е. по BUY - 19705 и и по SELL - 19701 ?