Me again

anyone know what this means?

I'm trying to overload the = operator with this code

union Colour
{

RGBQUAD ColourComponents; //allows access to the colour components Provided for compatibility only
unsigned char ColourBytes[4];
unsigned long ColourLongVal; //a long value for use externaly

};

Colour& operator= (Colour& Target, Colour& NewValue)
{
Target.ColourLongVal = NewValue.ColourLongVal;
return NewValue;
}

Colour& operator= (Colour& Target, long NewValue)
{
Target.ColourLongVal = NewValue;
return Target;
}

Colour& operator= (long& Target, Colour& NewValue)
{
Target = NewValue.ColourLongVal;
return NewValue;
}


Why am I getting an error, it's working for other operators.