2017-04-20 1 views
0

외부 함수 내부의 클래스 변수를 설정하려고했습니다. 나는 이것이 사실이라면 함수가 종료 된 후에 클래스를 지우는 것을 끝내는 것으로 생각한다.함수 내부에서 객체 변수를 설정하십시오.

Book bookArray[lineIndex];  
bookArray[0].setTitle("Here!"); 

//function in loop called in main 
for (int i = 0; i<lineIndex; i++) 
{ 
    arrayToBook(tempArray, bookArray[i]); 
} 

cout << bookArray[0].getTitle() << endl; 
//returns empty space 

//function definition 
void arrayToBook(string* tempArray, Book bookIn) 
{ 
    bookIn.setTitle(tempArray[0]); 
    bookIn.setAuthor(tempArray[1]); 
    //other sets 
} 
+2

다음과 같이'bookIn'을 참조로 전달하십시오 :'void arrayToBook (string * tempArray, Book & bookIn)' –

+1

함수의 실행이 끝날 때 객체는 값을 전달하면 파괴됩니다 , 예를 들어 ('Book bookIn'); copy ('bookArray [i]') – max66

+2

당신은'Book '을 값으로 전달하고 있으므로 복사되고, 모든 객체는 복사됩니다. 수정이 원본 객체 대신 사본에 대해 수행되고 해당 사본이 함수가 종료 된 후에 삭제됩니다. 참조로 전달하십시오. 또한 표시하는 코드 조각이 구문 상 올바르지 않기 때문에 [mcve]를 제공하십시오. –

답변

0

주석의 상태로서, 당신은 (비 const를) 참조로 인수를 전달해야합니다

void arrayToBook(const string* tempArray, Book& bookIn) 
{ 
    bookIn.setTitle(tempArray[0]); 
    bookIn.setAuthor(tempArray[1]); 
    //other sets 
} 

다른 경우에만 새로운 복사본을 수정합니다.

관련 문제