error C2593: 'operator +' is ambiguous
If I have the following files, I get this error (c2593 in VC9).
If I un-comment the prototype in main.cpp, the error disappears. I need to maintain the same functionality while keeping the class out of main.cpp. How can I do that?

Thanks.

main.cpp:

    #include "number.h"
    
    //const Number operator + (const Number & lhs, const Number & rhs);
    
    int main(void)
    {
    	Number n1(2);       // n1 = 2
    	Number n2(9,3);     // n2 = 3
    	Number n3 = n1+n2;  // n3 = 5
    }

number.h:

    struct Number
    {
    	int num;
    	Number(int n=0,int d=1) {num = n/d;}
    	operator int() {return num;}
    	operator double() {return num*1.0;}
    };

number.cpp:

    #include "Number.h"
    
    const Number operator + (const Number & lhs, const Number & rhs)
    {
	Number tmp;
	tmp.num = lhs.num + rhs.num;
	return tmp;
    }


error C2593: 'operator +' is ambiguous
===

If I have the following files, I get this error (c2593 in VC9).
If I un-comment the prototype in main.cpp, the error disappears. I need to maintain the same functionality while keeping the class out of main.cpp. How can I do that?

Thanks.

main.cpp:

    #include "number.h"
    
    //const Number operator + (const Number & lhs, const Number & rhs);
    
    int main(void)
    {
    	Number n1(2);       // n1 = 2
    	Number n2(9,3);     // n2 = 3
    	Number n3 = n1+n2;  // n3 = 5
    }

number.h:

    struct Number
    {
    	int num;
    	Number(int n=0,int d=1) {num = n/d;}
    	operator int() {return num;}
    	operator double() {return num*1.0;}
    };

number.cpp:

    #include "Number.h"
    
    const Number operator + (const Number & lhs, const Number & rhs)
    {
	Number tmp;
	tmp.num = lhs.num + rhs.num;
	return tmp;
    }

