2011-11-09 6 views
0

내가이 솔루션을 잘 모릅니다 ... 예를 들어개인 클래스 목록에 액세스하는 방법?

, 내 코드는,

class Bank 
{ 
private : 
    list < Client*> clientList; 

} 

class Client 
{ 
private : 
list< Account*> accountList; 

} 

class account 
{ 
private 
list< string> statement; 

} 

아, 내가 은행 클래스에 문을 액세스 할! 그리고 어떻게 액세스 할 생각 ...

1) 클라이언트 클래스에 list< Account*> getAccountList() 방법과 계정에 list<string> getStatement() 메서드를 만들기.

왜 목록이 비공개입니까? 음, 일반인도 좋을까요?

2) 2.있어

목록 액세스 방법 (음, 예를 들어, 팝 밀어?) 모든 클래스를 .. 만드는하지만 끔찍한입니다. 나는 할 일이 많고 비슷한 기능을 반복합니다 ...

가장 좋은 방법은 무엇입니까? 나는 결코 모를 방법인가?

+0

Java와 어떤 관련이 있습니까? –

+0

이 숙제입니까? – crashmstr

+0

가능한 해결책은 다음과 같습니다. http://stackoverflow.com/q/3911098/79455 – rve

답변

1

가장 좋은 방법은 목록에 const를 참조를 반환 각 클래스의 접근 방법을 가지고있다.

const_iterator를 반환하는 메서드가있을 수 있지만 각 클래스에서 begin, end 및 필요한 다른 목록 작업을 반환하는 메서드가 있어야합니다.

+0

와우, 감사합니다! –

+0

@ Johnpark : Q를 게시하는 유일한 목적은 구현을 완료하고 솔루션을 이해하지 못하는 것입니다. –

0

일반적으로 클래스의 비공개 멤버에 액세스하면 안됩니다. 이것이 기본 OO 개념입니다. 당신이 당신의 목록에 읽기 전용 액세스를 할 경우에 대비하지만 단지 그것의 const를 참조 좋아하는 반환 :

const list<Client*>& getList()const{ 
    return clientList; 
} 
0

다른 사람이 언급 한 바와 같이 교대 당신은 목록의 시작과 끝 반복자를 반환 할 수 있습니다.

0

숙제?

프로그램에 은행 계급에 액세스하는 20 개의 클래스가 있다고 가정하면, 다른 프로그래머가이 클래스를 작성했습니다.

그런 다음 은행 객체에있는 클라이언트가 목록에없는 것으로 나타났습니다.

원인을 발견하면 모든 수업을 이해하고 그 중 하나가 실수로 Bank.clientlist를 수정하는지 확인할 수 있습니다.

이것은 클라이언트 목록에 대한 액세스를 캡슐화하는 이유 중 하나입니다. 캡슐화에 대한 다른 이유와 그에 대한 또 다른 이유가 있습니다.

class Account 
{ 
    private: 
     list<string> statements; 

    public: 
     const list<string>& getStatements() const 
     { 
     return statements; 
     } 
}; 

반환 목록 참조 수정할 수 없기 때문에이 공공보다 낫다 :

카스퍼

관련 문제