1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| template <typename T> class AutomaticParam : public ListenerManager, public APIdManagement
{
private:
T m_Data;
public:
inline T & operator=(const T & Right)
{
if(m_Data != Right)
{
m_Data = Right;
this->SendEvent(666, (void*)m_Id);
}
else
{
m_Data = Right;
}
return m_Data;
}
inline operator T()
{
return m_Data;
}
inline T operator++(int)
{
T Ans = m_Data;
++m_Data;
return Ans;
}
inline T operator--(int)
{
T Ans = m_Data;
--m_Data;
return Ans;
}
inline T & operator++()
{
return (++m_Data);
}
inline T & operator--()
{
return (--m_Data);
}
inline T & operator+=(const T & Right)
{
m_Data+=Right;
return m_Data;
}
inline T & operator-=(const T & Right)
{
m_Data-=Right;
return m_Data;
}
static bool Test(void)
{
AutomaticParam<int> Toto;
Toto = 12;
Toto = 13.0;
Toto += 12;
int tutu = Toto;
tutu = Toto - 1;
tutu = 2+ Toto;
tutu = Toto++;
tutu = --Toto;
tutu = Toto*2.0;
return true;
}
}; |
Partager