不能做pimpl

时间:2016-08-18 10:45:37

标签: c++ c++14 pimpl-idiom

我尝试制作pimpl模式:

//header
#include <memory>

class Table
{
public:
    Table();

private:
    class Impl;
    std::unique_ptr<Impl> *m_impl;
};
//source
#include <vector>
#include "table.hpp"

struct Table::Impl {
    Impl();
};

Table::Table()
    : m_impl { std::make_unique<Impl>() }
{

}

但是我收到了一个错误:

  

table.cpp:9:错误:无法转换&#39;大括号括起来的初始化列表&#39; to&#39; std :: unique_ptr *&#39;在初始化中:m_impl {std :: make_unique()}

我无法理解我做错了以及如何解决它。

1 个答案:

答案 0 :(得分:4)

您的m_impl是指向unique_ptr的指针。

更改

std::unique_ptr<Impl> *m_impl;

std::unique_ptr<Impl> m_impl;