不能长疙瘩
Cannot make 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: error: cannot convert 'brace-enclosed initializer list' to 'std::unique_ptr*' in initialization : m_impl { std::make_unique() }
我不明白我做错了什么以及如何改正。
您的 m_impl
是指向 unique_ptr
的指针。
改变
std::unique_ptr<Impl> *m_impl;
到
std::unique_ptr<Impl> m_impl;
我尝试制作粉刺图案:
//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: error: cannot convert 'brace-enclosed initializer list' to 'std::unique_ptr*' in initialization : m_impl { std::make_unique() }
我不明白我做错了什么以及如何改正。
您的 m_impl
是指向 unique_ptr
的指针。
改变
std::unique_ptr<Impl> *m_impl;
到
std::unique_ptr<Impl> m_impl;