- 두 클래스는
Processor
및Data
입니다. Data
일부 데이터를 사용자가Processor
의 공개 메소드에 전달할 수있는 객체이다.- 는 내부적으로
Processor
는Data
을 기반으로InternalData
유형을 사용합니다. Data
에서InternalData
으로 개인 변환 기능을 만들고Processor
안에 다시 코드를 넣고Data
의 인터페이스가 언젠가 바뀔 때 필요한 변경 사항을 지역화하지 않도록하십시오.- 하지만 대신 명시 적의
Processor
에서 암시 적으로 이러한 변환을하고 싶습니다. - 이 변환 함수는
Processor
구현에만 사용됩니다.
외부 세계에 보이지도 액세스 할 수 없어야합니다. InternalData
은 라이브러리 유형입니다. 나는 그것을 제어 할 수 없으며 인터페이스를 수정할 수 없다.
즉, 변환 생성자 또는 변환 연산자 멤버 함수를 추가 할 수 없습니다.
원하는 경우 기본 제공 유형으로 간주 할 수 있습니다.- 가 나는 사업이 아니다 이후, 두
Data
클래스 내부에 그 컨버터를 넣어 싶지 않아 그리고Processor
다른 내부적으로 뭔가로 변환 알지 못한다.
길고도 짧은 이야기, 내가하고 싶은 Processor
의 구현은 암시 적으로 Data
및 InternalData
사이에 형식 변환을 만드는 방법을 알고,하지만 다른 Processor
제외하고 아무도 그것을 심지어는 것에 대해 알 수 없어야합니다 Processor
의 내부에서 수행됩니다.구현시 자동 유형 변환
C++에서 할 수있는 방법이 있습니까? 솔루션에서
내 시도는
내 첫 번째 시도는 그 private
하고, Data
의 내부 생성자 및 변환 연산자를 변환하는 것이었다하고 Processor
Data
의 friend
을하는 것은 그 개인 컨버터에 액세스 할 수 있도록. 그러나 이것은 내가 원하는 것보다 더 많은 작업을 수행합니다 그것은 나쁜 Data
의 내부-Processor
전체 액세스 권한을 제공합니다.
Data
의의 종류를 만들 것으로 나타났습니다,하지만 Processor
의 사용을 위해해야하는 인터페이스. 그래서 추상적 인 기본 클래스 InternalDataConversions
을 만들고이 변환 함수를 pure virtual
으로 선언했습니다. 이 수업을 friend
(Processor
)으로 만들었습니다. 그렇다면 Data
클래스를 개인적으로 파생시켜 이러한 변환기를 구현했습니다. 이렇게하면 Processor
은이 "변환 인터페이스"를 내부적으로 사용할 수 있지만 Data
내부의 다른 어떤 것도 액세스 할 수 없으므로 더 좋습니다. 하지만 아래쪽은 이제
Data
클래스가 정의에서 정의하지 않아야하는 부분을 지정해야하며, 불필요하게는 InternalData
및 InternalDataConversions
에 따라 달라 지므로 불편합니다. 더 좋은 아이디어가 있습니까?
TL; 산문은 문법과시 과정에 좋습니다. 프로그래밍 언어 문제는 최소한 의사 코드를 제공해야합니다. 죄송합니다.이 책을 읽을 수는 없습니다. (단순한 적절한 UML 다이어그램조차 1000 개 이상의 단어를 말할 것입니다.) –
독서가 마음에 들지 않으면 다른 곳으로 가십시오. 모든 사람에게 대답 할 필요는 없습니다. 코드는 바로 그 것이다 : 코드. 그것은 내가 필요로하는 것을 당신에게 말하지 않을 것이고, 나의 디자인의 제한은 무엇인가하는 것이다. – SasQ
그냥 내 2cents 비판 (넣어 수 있습니까?), downvote하지 않았다 ... –