2011-12-22 2 views
0

가정하자 내가 클래스 A.클래스 래퍼와 디스패처

나는, 일부 기능을 래핑하는 클래스에 파견 몇 가지 새로운 기능과 다른 기능을 추가합니다 래퍼의 어떤 종류를 기록 할 수 있습니다. 또한 클라이언트 코드에서 자연스럽게 보이기를 원합니다. 내 생각 엔 어떤 종류의 내성이 필요하고 C++에서는 불가능할 수도 있지만 어쩌면 틀 렸습니다.

ADDED 코디 회색 코멘트 후 :

나는 RECT에서 인쇄 클래스 A가 있습니다. SetX, SetY, SetDX, SetDY 및 gettes 등의 메소드를 가지고 있습니다. 주어진 Base에 따라 SetBaseX, SetBaseY 및 SetX, SetY 메서드를 갖지만 DX 메서드를 래핑하지 않을 클래스를 만들고 싶습니다. 또한 래퍼 클래스에서 A 로의 캐스팅을 방지하기 위해 상속을 사용하고 싶지 않습니다. A뿐만 아니라 래퍼가 일부 인터페이스를 구현하는 많은 클래스를 래핑 할 수 있어야합니다.

+1

왜 내성 검사가 필요합니까? 래퍼 클래스는 항상 C++로 작성됩니다 ... 아마도 당신이하고 싶은 것을 나타내는 의사 코드를 게시 할 것입니다. –

답변

2

래핑 된 클래스의 모든 기능에 대해 위임 래퍼를 수동으로 작성해야합니다. C++에는 이것을 자동화 할 수있는 인트로 스펙 션이 없습니다.

+0

야프, 나쁜 소식, 다른 해결책을 검색 할 것입니다.) +1 +1 – Yola

2

컴포지션을 사용하고 싶습니다.

클래스 B가 클래스 A의 클래스 B에 대한 래퍼입니다 생성자에 클래스 A를 인스턴스화하고 소멸자를 삭제, 그래서 B는

클래스 B는 자신의 방법과 클래스의 메소드를 선언 A. 책임이있다 A의 메소드 중 하나가 호출되면 로컬 클래스 A 변수로 전달하고 그 결과를 리턴합니다.

+0

답장 +1 – Yola