2009-11-27 1 views
-3

:기본 C 나는 친구이의 클래스 공지 사항에서 볼 ++ 질문

void show_results(Book& foreign_books) { 
     int total_books 

     total_books = foreign_books.getBooksNumber(); 
     cout << total_books << endl; 
    } 

이 좋은 클래스 정의입니까?

class Book{ 
     public: 
     Book(); 

     int getBooksNumber(); 
    }; 

ps : 저는 휴대 전화에서 이것을 작성했습니다. 설명서가 너무 많습니다. (초보자도 있습니다.) 당신의 확인이 필요합니다. 타이 그 책과 도서를 제외하고

답변

4

당신이 묻는 것을 말하기 란 정말 어렵습니다. 그래도 비판을 조금하겠습니다. 아마 이것들이 도움이 될 것입니다.

show_results 메소드는 const-correct이어야합니다. 즉 당신이 CONST로 foreign_books을 통과해야 의미 : 당신이 당신의 방식으로 모든 foreign_books을 수정하려고하면

const Book& foreign_books 

이 방법은, 컴파일러가 불평 할 것이다.

mgb가 가리키는 것처럼 show_results 메소드에는 책이 아니라 책이 필요하기 때문에 Books 클래스가 작동하지 않습니다. 하지만 당신은, 당신은 아마도 getBooksNumber의 CONST-올바른뿐만 아니라 만들 것인지 수정 후 :

int getBooksNumber() const; 

을 당신은 당신이 당신이 가까이있는 경우 알려 정말 열심히, 그래서 여기에 달성하려는 것을 우리에게 말하지 않았다 당신이하고있는 일을 바로 잡을 수 있습니다. 당신이 또는 도서의 총 수를 추적하는 단지 경우 각 책에 고유 번호를 연결하려는 경우 내가 확실하지 않다

void show_results(Book& foreign_books) { 
    int total_books; // **here** 

    total_books = foreign_books.getBooksNumber(); 
    cout << total_books << endl; 
} 
+0

도서 및 foreign_books const 도서를 가지고 수업을 어떻게해야합니까? –

+0

나는 당신이 무엇을 요구하고 있는지 확신하지 못합니다. void show_results (const Book & foreign_books) const; 당신이 찾고있는 것일 수 있습니다. – ChrisInEdmonton

1

같은 (typ0)

하지 않습니다 그리고 당신은 번호를 저장하는 책의 일부 데이터 멤버, 그것을 생성하는 몇 가지 방법을 가지고 있습니다.
각 책()의 고유 번호를 만들려면 일종의 공장이 필요할 수도 있습니다.

+0

오른쪽, 타이. 이제 해결 된 –

0

:

마지막으로, 당신은 당신의 show_results 방법에 세미콜론을 놓친 지금까지 구성된 객체. 전의 경우라면 Book 클래스의 bookNumber를 나타내는 멤버 변수를 선언해야하고 getBooksNumber()에서는 bookNumber 변수에 할당 된 값을 반환해야합니다. 상수 함수로 getBooksNumber()를 만들고 상수 개체로이 함수를 호출하면 더 좋습니다.

나중에 작성한 도서 개체의 총 개수를 추적하는 경우 나중에 추적 할 정적 데이터 멤버가 있어야하며 getBooksNumber()를 정적으로 만들 수 있습니다. 호출 객체없이 getBooksNumber()를 호출하십시오.

+0

왜 3 개의 downvotes와 5 년 된 질문을 부딪 혔나요? :( – Julian