我尝试制作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()}
我无法理解我做错了以及如何解决它。
答案 0 :(得分:4)
您的m_impl
是指向unique_ptr
的指针。
更改
std::unique_ptr<Impl> *m_impl;
到
std::unique_ptr<Impl> m_impl;