我在Xcode中编译我的c ++代码,但它不起作用。我的重载>>
运算符函数似乎有问题,我不知道它是什么!?? !!!
我也得到了错误"变量' d'在这里使用时未初始化"。我想从用户那里查看d
,这就是为什么我无法理解这个错误。
#include <iostream>
#include <string>
using namespace std;
enum weekday{MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY};
weekday operator+(weekday day, int days){
return weekday((int(day) + days) % 7);
}
//----------------------------------------------------------
ostream &operator<<(ostream &ostrm, weekday day){
switch(int(day)){
case MONDAY:
ostrm << "MONDAY";
break;
case TUESDAY:
ostrm << "TUESDAY";
break;
case WEDNESDAY:
ostrm << "WEDNESDAY";
break;
case THURSDAY:
ostrm << "THURSDAY";
break;
case FRIDAY:
ostrm << "FRIDAY";
break;
case SATURDAY:
ostrm << "SATURDAY";
break;
case SUNDAY:
ostrm << "SUNDAY";
break;
default:
ostrm << "Somewhere inside the depth of time...";
}
return ostrm;
}
//------------------------------------------------------------
istream &operator>>(istream &istrm, weekday day){
switch(int(day)){
case 0:
istrm >> MONDAY;
break;
case 1:
istrm >> TUESDAY;
break;
case 2:
istrm >> WEDNESDAY;
break;
case 3:
istrm >> THURSDAY;
break;
case 4:
istrm >> FRIDAY;
break;
case 5:
istrm >> SATURDAY;
break;
case 6:
istrm >> SUNDAY;
break;
default:
cout << "Your input is not valid..." << endl;
}
return istrm;
}
//---------------------------------------------
int main(){
cout << "Enter the day: ";
weekday d;
cin >> d;
d = d + 16;
cout << d << endl;
}
答案 0 :(得分:0)
第二个参数是输出值,您需要分配到它并通过引用传递它:
istream &operator>>(istream &istrm, weekday &day){
int a;
istrm >> a;
switch(a){
case 0:
day = MONDAY;
break;
case 1:
day = TUESDAY;
break;
case 2:
day = WEDNESDAY;
break;
case 3:
day = THURSDAY;
break;
case 4:
day = FRIDAY;
break;
case 5:
day = SATURDAY;
break;
case 6:
day = SUNDAY;
break;
default:
cout << "Your input is not valid..." << endl;
}
return istrm;
}
//---------------------------------------------
int main(){
cout << "Enter the day: ";
weekday d;
cin >> d;
// d = d + 16;
cout << d << endl;
}