pimplイディオムのメインクラスに生ポインタ(parent_
)を取り除きたいと思います。それについての最も良い方法は何でしょうか。ここでの例である:C++ 11標準ライブラリのin C++ 11 pimplイディオムの生ポインタを取り除きたい
//==============in "widget.h"
class Widget {
public:
Widget() {};
…
private:
struct Impl;
std::unique_ptr<Impl> pImpl;
};
//==== in .cpp
#include "widget.h"
#include "gadget.h"
#include <string>
#include <vector>
struct Widget::Impl {
Widget* parent_;
std::string name;
std::vector<double> data;
Gadget g1, g2, g3;
Impl (Widget* parent) : parent_ (parent) {}
};
Widget::Widget()
: pImpl(std::make_unique<Impl>(this))
{}
なぜ参照を使用しないで 'ウィジェット&'と '* this'を渡す? – keith