#include <iostream>
using namespace std;
enum Month {
january = 1 ,
february,
march,
april,
may,
june,
july,
august,
september,
october,
november,
december
} ;
class Date {
int y, d;
Month m;
public :
Date( int yy, Month mm, int dd) // constructor
: y( yy) , d( dd) , m( mm) { // member initializer
}
Month& operator++ ( Month & m) {
m = static_cast < Month> ( m + 1 ) ;
return m;
}
void add_month( ) {
++ m;
}
} ;
int main( )
{
Month m = january;
++ m;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmVudW0gTW9udGggewogICBqYW51YXJ5ID0gMSwKICAgZmVicnVhcnksCiAgIG1hcmNoLAogICBhcHJpbCwKICAgbWF5LAogICBqdW5lLAogICBqdWx5LAogICBhdWd1c3QsCiAgIHNlcHRlbWJlciwKICAgb2N0b2JlciwKICAgbm92ZW1iZXIsCiAgIGRlY2VtYmVyCn07CgpjbGFzcyBEYXRlIHsKICAgIGludCB5LCBkOwogICAgTW9udGggbTsKCiAgICBwdWJsaWM6CiAgICAgICAgRGF0ZShpbnQgeXksIE1vbnRoIG1tLCBpbnQgZGQpIC8vIGNvbnN0cnVjdG9yCiAgICAgICAgOiB5KHl5KSwgZChkZCksIG0obW0pIHsgLy8gbWVtYmVyIGluaXRpYWxpemVyCiAgICAgICAgfQoKICAgICAgICBNb250aCYgb3BlcmF0b3IrKyhNb250aCAmbSkgewogICAgICAgICAgICBtID0gc3RhdGljX2Nhc3Q8TW9udGg+KG0gKyAxKTsKICAgICAgICAgICAgcmV0dXJuIG07CiAgICAgICAgfQoKICAgICAgICB2b2lkIGFkZF9tb250aCgpIHsKICAgICAgICAgICAgKyttOwogICAgICAgIH0KfTsKCmludCBtYWluKCkKewogICBNb250aCBtID0gamFudWFyeTsKICAgKyttOwp9
compilation info
prog.cpp:29:35: error: postfix ‘Month& Date::operator++(Month&)’ must take ‘int’ as its argument
Month& operator++(Month &m) {
^
prog.cpp: In member function ‘void Date::add_month()’:
prog.cpp:35:13: error: no match for ‘operator++’ (operand type is ‘Month’)
++m;
^~~
prog.cpp: In function ‘int main()’:
prog.cpp:42:4: error: no match for ‘operator++’ (operand type is ‘Month’)
++m;
^~~
stdout