나는 C++에서 날짜, 월 및 연도 변수와 함께 사용할 수있는 연산자 함수를 포함하는 "날짜"클래스를 만듭니다.C++ 연산자 함수 내 선언되지 않은 식별자
내 클래스에 date.h 헤더와 date.cpp가 있는데 date.cpp의 연산자 함수 중 하나에서 오류가 발생합니다.
date.cpp 는 (나는이 연산자 기능이 추가 된 일을 계산하고 새 날짜 개체를 반환하고 원래 날짜 개체에 변경되는 것을 방지 할 수 있습니다.)
date date::operator+(long days) const{
date dTemp(date.getDay(), date.getMonth(), date.getYear());
for(int i=0;i<days;i++){
//If days go over a months day count.
if(dTemp.getDay() >= daysInMonth[dTemp.getMonth()]){
dTemp.setDay(1);
if(dTemp.getMonth() < 12){
dTemp.setMonth(dTemp.getMonth() + 1);
}
else{
//Changing a year.
dTemp.setMonth(1);
dTemp.setYear(dTemp.getYear() + 1);
}
}
else{
dTemp.setDay(dTemp.getDay() + 1);
}
}
return dTemp;
}
오류 :
1>h:\c++\teht21\teht20\date.cpp(74): error C2143: syntax error : missing ')' before '.'
1>h:\c++\teht21\teht20\date.cpp(74): error C3484: syntax error: expected '->' before the return type
1>h:\c++\teht21\teht20\date.cpp(74): error C2061: syntax error : identifier 'getDay'
1>h:\c++\teht21\teht20\date.cpp(79): error C2065: 'dTemp' : undeclared identifier
1>h:\c++\teht21\teht20\date.cpp(79): error C2228: left of '.getDay' must have class/struct/union
1> type is ''unknown-type''
라인 (74)은 다음과 같습니다
date dTemp(date.getDay(), date.getMonth(), date.getYear());
어떤 도움도 대단히 감사합니다. 더 많은 코드가 필요하면 알려주십시오. getMonth()
이 getYear()
이 멤버 함수는
date dTemp(date::getDay(), date::getMonth(), date::getYear());
이 기능이 작동하는 것 같습니다. 대단히 감사합니다. 귀하의 답변과 dbrank0의 답변의 차이점은 무엇입니까? 둘 다 작동하기 때문에. 방금 C + +를 배우기 시작했기 때문에 궁금합니다. – Baburo
@Baburo : 차이점은 dbrank0의 코드가 함수 이름을 완벽하게 한정한다는 것입니다. 'getDay'가 가상 함수이고'operator'가'date'의 파생 클래스에서 호출되면,'date :: getDay()'는'date'에서 함수의 버전을 호출합니다. 반면에'getDay() '는 파생 클래스에서 오버라이드를 호출합니다. 그렇지 않으면 차이가 없으며 동일한 기능을 지정하는 다른 방법 일뿐입니다. –
Btw,'date dTemp (* this);'라고 쓸 수도 있는데, 복사 생성자를 사용하여'dTemp' –