dll/공유 객체에 배포 될 C++ 라이브러리 용 API를 설계하고 있습니다. 라이브러리에는 가상 함수가 포함 된 다형성 클래스가 들어 있습니다. 이러한 가상 함수를 DLL API에 노출하면 이전 버전의 라이브러리 용으로 빌드 된 응용 프로그램과의 이진 호환성을 손상시키지 않으면 서 동일한 클래스를 더 많은 가상 함수로 확장 할 수 있다는 우려에서 벗어났습니다.이진 호환 확장 성을위한 C++ API를 설계하는 방법
가상 함수가있는 모든 클래스를 숨기려면 PImpl이라는 관용구를 사용하는 것이 하나의 방법이지만 응용 프로그램에는 라이브러리의 클래스를 서브 클래 싱하고 가상 메서드를 재정의 할 가능성이 없어집니다.
역방향 바이너리 호환성을 유지하면서 새 버전의 dll에서 가상 클래스가 아닌 API를 확장 할 가능성을 잃지 않으면 서 응용 프로그램에서 서브 클래 싱 할 수있는 API 클래스를 어떻게 설계 하시겠습니까?
업데이트 : 라이브러리의 대상 플랫폼은 windows/msvc 및 linux/gcc입니다.
게시 한 PDF 파일의 호스트가 완료된 것으로 보입니다. 다시 보내 주시겠습니까? –
@ MichałGórny 그것은 다시 돌아오고있는 것처럼 보이지만, 나는 그것을 (여기에서) (http://static.coldattic.info/restricted/science/syrcose09/cppbincomp.pdf) 재 호스팅했습니다. –