【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0155デフォルトの名無しさん
2015/12/15(火) 22:52:06.66ID:FTksUk/bごめんよ。↓こんなコードを比べてると思ってるんだけど、あってる?
// 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 にどんな変更が入った場合に起こる問題のことを言ってるの?
■ このスレッドは過去ログ倉庫に格納されています