Can someone help here … the operator is overloaded, actually it should work
//+------------------------------------------------------------------+
//| PlusPlus.mq5 |
//+------------------------------------------------------------------+
struct STest
{
double value;
double ToDouble() { return value; }
//--- Assignment operators
void operator = (STest &dec) { value=dec.ToDouble(); }
void operator = (double v) { value=v; }
//--- Logical operators
bool operator == (STest &dec) { return (value==dec.value); }
bool operator == (double v) { return (value==v); }
bool operator != (STest &dec) { return (value!=dec.value); }
bool operator != (double v) { return (value!=v); }
bool operator >= (STest &dec) { return (value>=dec.value); }
bool operator >= (double v) { return (value>=v); }
bool operator <= (STest &dec) { return (value<=dec.value); }
bool operator <= (double v) { return (value<=v); }
bool operator > (STest &dec) { return (value>dec.value); }
bool operator > (double v) { return (value>v); }
bool operator < (STest &dec) { return (value<dec.value); }
bool operator < (double v) { return (value<v); }
//--- Arithmetic & binary operators
void operator -= (STest &dec) { value-=dec.value; }
void operator -= (double v) { value-=v; }
void operator += (STest &dec) { value+=dec.value; }
void operator += (double v) { value+=v; }
void operator *= (STest &dec) { value*=dec.value; }
void operator *= (double v) { value*=v; }
void operator /= (STest &dec) { value/=dec.value; }
void operator /= (double v) { value/=v; }
void operator ++ (void) { value+=1; }
void operator -- (void) { value-=1; }
};
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
STest t;
t=1;
t++; // Illegal operation use ... why?
//---
return(INIT_FAILED);
}