2014-07-17 3 views
-1

아래 코드를 사용하여 문제를 설명하는 것이 더 나을 수도 있습니다.아래의 코드를 주문하는 방법 : 클래스 멤버 함수가 클래스 인수가 아닌 비 멤버 함수를 호출합니까?

참고 : 주석 처리 된 줄을보고 #으로 시작하는 것으로 충분합니다.

질문 :
어떻게 주문 라인 # 1, # 2, # 3, # 4? 까다로운 부분은 # 2가 # 3에 의존하지만 # 3은 # 1에 의존한다는 것입니다.
(추가 참고 :. 내가 클래스 본문 내에서 생성자를 유지하기 위해 필요했다)

/* --------------------Header-------------------- */ 

struct Sales_data {        /* #1: class definition */ 

    /* #2: member function (calling a non-member function) */ 
    Sales_data(std::istream &is){read(is, *this); 
}; 

std::string bookNo; 
unsigned units_sold = {0}; 
double revenue {0.0 }; 
}; 

/* #3: declaration of the non-member function */ 
std::istream &read(std::istream &is, Sales_data &item) ; 


/* --------------------Source-------------------- */ 
/* #4: definition of the non-member function */ 
istream &read(istream &is, Sales_data &item) {   
    /* .... */ 
} 

int main(){ 
    /* .... */ 
} 

답변

5

당신은 구조체와 클래스를 전달-선언 할 수 있습니다. 따라서 :

struct Sales_data; 
std::istream& read(std::istream& is, Sales_data& item); 

그 밖의 모든 것.

+0

+1. 또는 Sales_data 생성자 본문을 .cc 파일로 옮길 수 있습니다. – Nemo

+0

@Nemo OP는 옵션이 아닙니다. "(추가 참고 : 클래스 본문 내에 생성자를 유지해야했습니다.)" –

+0

@ Nemo 팁 주셔서 감사. 그러나 나는 그것을 수업 시간 안에 유지하도록 요청 받았다. – Minteh

관련 문제