typedef struct tFilterDef
{
tFilterDef() : Type(sft_General), ID(0) {};
tFilterDef(SimpleFilterType type, long id) : Type(type), ID(id) {};
tFilterDef(tFiltersArray *pArr) {Type = sft_GeneralMulti; ID = (long)pArr;}
bool operator==(const tFilterDef &flt) const {return (flt.Type == Type) && (flt.ID == ID);};
bool operator!=(const tFilterDef &flt) const {return (flt.Type != Type) || (flt.ID != ID);};
bool operator<(const tFilterDef &flt) const {return (Type < flt.Type)||((Type == flt.Type)&&(ID < flt.ID));};
operator tFiltersArray*() {if (Type == sft_GeneralMulti) return (tFiltersArray *)ID; return NULL;}
SimpleFilterType Type;
long ID;
} tFilterDef;
при сравнении двух переменных данного типа оператором != компайлер для обоих переменных делает operator tFiltersArray*() а затем сравнивает. в чем смысл??