- 155 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 22:52:06.66 ID:FTksUk/b.net]
- >>150
ごめんよ。↓こんなコードを比べてると思ってるんだけど、あってる? // PimplInterface.hpp struct PimplInterface { int f(); private: class Impl; Impl* pimpl; }; // PimplInterface.cpp struct PimplInterface::Impl { int f() { return 1; } }; int PimplInterface::f() { return pimpl->f(); } // AbstractInterface.hpp struct AbstractInterface { virtual int f() = 0; }; // AbstractInterface.cpp struct AbstractInterfaceImpl : AbstractInterface { int f() { return 1; } }; 「基底の変更」は AbstractInteface つまり外部インターフェースの変更のことで、 pimpl の「委譲コード」が PimplInterface::f() の定義のことだと思うんだけど、 やっぱり「基底の変更にものすごく弱い」とか「実装依存」とか言ってるのが なんのことだか見えてこないんだ。 *Interface にどんな変更が入った場合に起こる問題のことを言ってるの?
|

|