class sbDegree { public: sbDegree(); ~sbDegree(); explicit sbDegree( const float b ); explicit sbDegree( const int b ); operator const float() const; operator const int () const; bool operator>( const float b ) const ; bool operator<( const float b ) const ; private: float val; }; sbDegree::~sbDegree() {} sbDegree::sbDegree() { val=0; } sbDegree::sbDegree( const float b ) { this->val = b; } sbDegree::sbDegree( const int b ) { this->val = (float)b; } sbDegree::operator const int () const { return (float) val; } sbDegree::operator const float () const { return (float) val; } bool sbDegree::operator<( const float b) const { if (val < b) return true; return false; } int main() { sbDegree ar(4); if (ar < 90) { return 0; } return 0; } 1>------ Build started: Project: lolass, Configuration: Debug Win32 ------ 1>Compiling... 1>lolass.cpp 1>.\lolass.cpp(29) : error C2666: 'sbDegree::operator <' : 3 overloads have similar conversions 1> .\lolass.cpp(12): could be 'bool sbDegree::operator <(const float) const' 1> or 'built-in C++ operator<(float, int)' 1> or 'built-in C++ operator<(int, int)' 1> while trying to match the argument list '(sbDegree, int)' 1>Build log was saved at "file://d:\lolass\lolass\lolass\Debug\BuildLog.htm" 1>lolass - 1 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========