总是通过不了编译啊,提示
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
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
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);
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)
{
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是临时变量,返回的值无效的。把这个设置成类成员。要么就你把这个改成传进来的参数,用引用传。你还是另请高明吧。改这程序太浪费时间了,而且程序又贴在别的地方的。
你多点分,然后进来的人会多很多。