pImpl クラスを実装する作業負荷を最小限に抑えるには、どのようなトリックを使用できますか?
ヘッダ:
class Foo {
struct Impl;
boost::scoped_ptr<Impl> self;
public:
Foo(int arg);
~Foo();
// Public member functions go here
};
実装:
struct Foo::Impl {
Impl(int arg): something(arg) {}
// All data members and private functions go here
};
Foo::Foo(int arg): self(new Impl(arg)) {}
Foo::~Foo() {}
// Foo's public functions go here (and they refer to data as self->something)
Boost、おそらく継承、CRTP、またはその他のトリックを使用して、可能な限り多くの定型コードを回避して、これをどのように改善しますか? 実行時のパフォーマンスは問題ではありません。