总是通过不了编译啊,提示
error C2593: 'operator <<' is ambiguous
error C2593: 'operator >>' is ambiguous
我用VC++6.0,马上就要交了,老师只认VC++6.0
请修改程序使之务必能在VC++6.0上运行
程序地址
http://hi.baidu.com/falomsc/blog/item/1e0ef72620ad571b8b82a162.html

解决方案 »

  1.   

    我猜可能是这样。。
    DateFormatter(char* date);
    friend ostream& operator<<(ostream&,DateFormatter&);然后这里面报错
    DateFormatter DateFormatter::operator + (const int &days)
    {
    if(days <= 0) {cout<<"天数不为正,错误\n"; return *this;}
    }
    还有operator- 号?如果是这里,那应该是cout<<"天数不为正,错误\n";可以理解成
    cout<<DateFormatter("天数不为正,错误\n");
    也可以理解成普通的cout<<"天数不为正,错误\n";
    所以导致二义性。
    你试试在DateFormatter(char* date);前面加explicit
    explicit DateFormatter(char* date);
      

  2.   

    Compiling...
    132.cpp
    F:\123\132.cpp(42) : warning C4172: returning address of local variable or temporary
    F:\123\132.cpp(263) : warning C4172: returning address of local variable or temporary
    F:\123\132.cpp(271) : warning C4172: returning address of local variable or temporary
    F:\123\132.cpp(495) : error C2593: 'operator >>' is ambiguous
    F:\123\132.cpp(496) : error C2593: 'operator <<' is ambiguous
    F:\123\132.cpp(497) : error C2593: 'operator >>' is ambiguous
    F:\123\132.cpp(498) : error C2593: 'operator <<' is ambiguous
    F:\123\132.cpp(499) : error C2593: 'operator >>' is ambiguous
    F:\123\132.cpp(500) : error C2593: 'operator >>' is ambiguous
    F:\123\132.cpp(501) : error C2593: 'operator <<' is ambiguous
    F:\123\132.cpp(502) : error C2593: 'operator >>' is ambiguous
    F:\123\132.cpp(502) : error C2593: 'operator <<' is ambiguous
    F:\123\132.cpp(503) : error C2593: 'operator >>' is ambiguous
    F:\123\132.cpp(503) : error C2593: 'operator <<' is ambiguous
    执行 cl.exe 时出错.132.obj - 1 error(s), 0 warning(s)
      

  3.   

    警告太多了。。char* DateFormatter::GetDate()
    {
    char* d = new char[25];
    char* m = new char[5];
    char* y = new char[5];
    d = itoa(day,d,10);
    m = itoa(mon,m,10);
    y = itoa(year,y,10);
    strcat(d,"/");
    strcat(d,m);
    strcat(d,"/");
    strcat(d,y);
    char ret[25];
    strcpy(ret,d);
    delete[] d;
    delete[] m;
    delete[] y;
    return ret;
    }这个ret是临时变量,返回的值无效的。把这个设置成类成员。要么就你把这个改成传进来的参数,用引用传。你还是另请高明吧。改这程序太浪费时间了,而且程序又贴在别的地方的。
    你多点分,然后进来的人会多很多。