우선, 이것은 학업 목적을위한 것입니다. 나는 극도로 좌절했고, 나는 심지어 반나절 동안 친구와 함께이 일을 해왔다.친구 클래스 및 과부하 연산자
우리는 과부하가 걸린 운영자와 친구 클래스 모두와 협력하고있어이 실험실에서는 나를 완전히 바보 같이 느끼게했습니다. 아래에 중요한 코드를 게시 하겠지만 전체 프로젝트는 게시물 하단의 zip 파일에 있습니다. 나는 그것이 오류로 가득차 있고 이제는 (예외를 던지면서) 내 코드를 저장하는 것을 거부하고있다.
이
은class NumDays
{
private:
int hours;
double days;
void calcDays(int);
public:
NumDays (int);
void setHours (int);
double getWork();
NumDays operator+ (const NumDays &);
NumDays operator- (const NumDays &);
NumDays operator++();
void operator<< (const NumDays &);
friend class Overtime(const NumDays &);
};
초과 클래스 생성자로 객체,하지만 내 이해에서 NUMDAYS 전달 내 시도를 좋아하지 않는 것, 이것이 어떻게 내 기본 클래스의 헤더 파일 코드 초과 작업 개체는 각 NumDays 개체로 구성되기 때문에 작동해야합니다.
두 번째 문제는 오버로드 된 연산자로 인한 문제입니다.이 문제를 해결하는 데 더 어려움을 겪고 있고 더 구체적으로 구현해야하는 이유가 더 많습니다. .
이
그것은 확실히 < < 오버로드의 팬이 아니에요 오버로드 된 연산자를/*overloading the + operator***************************************************/
NumDays NumDays::operator+ (const NumDays &right)
{
NumDays temp;
temp.hours = hours + right.hours;
return temp;
}
/*overloading the -operator***************************************************/
NumDays NumDays::operator- (const NumDays &right)
{
NumDays temp;
temp.hours = hours - right.hours;
return temp;
}
/*overloading the ++ operator**************************************************/
NumDays NumDays::operator++()
{
++hours;
return *this;
}
/*overloading the << operator**************************************************/
void NumDays::operator<< (const NumDays &objOput)
{
cout << objOput.getWork << " days have been worked by this work";
}
의 코드이지만, 나는 기본적으로 시도하고이 일을 내 책에서 직접 코드를 복사됩니다.
원본 코드 링크가 깨졌습니다. 여기에 영구 링크가 있습니다. http://www.mediafire.com/file/j4q3fln9a8p98ll/dayCounter.zip
또한 내 코드가 다소 수정되었습니다. 완벽하게 작동하지 않지만 컴파일되고 은 대부분입니다. http://www.mediafire.com/file/g5m21drbuab8tso/Lab5workCounter.zip
'cout << objOput.getWork << "작업 일수"-'objOput.getWork'는 함수입니다. 괄호가 누락 된 것처럼 그 행에 잘못된 것이 있습니까? – PaulMcKenzie
그건 '친구'선언이 작동하는 방식이 아니기 때문에 (구문 적으로나 구문 적 으로든) 당신은 필요하지 않습니다. –
@ Cheersandhth.Alf와 동의하십시오. [친구 선언] (http://en.cppreference.com/w/cpp/language/friend)을 다시 살펴보십시오. –