pimpl设计模式unique_ptr的编译问题
作者网站:http://shanwq.com/
本文不是介绍pimpl设计模式,而是关于在使用std::unique_ptr
实现pimpl设计模式时出现的编译问题及原因,以及与std::shared_ptr
实现pimpl的区别。
问题描述
someclass.h
#include <iostream>
#include <memory>
class SomeClass
{
public:
void do_some_thing();
private:
class SomeClassImp;
std::unique_ptr<SomeClassImp> ptr;
};
someclass.cpp
#include "someclass.h"
#include <iostream>
class SomeClass::SomeClassImp
{
public:
void implementation()
{
std::cout << "implementing...\n";
}
};
void SomeClass::do_some_thing()
{
ptr->implementation();
}
app.cpp
#include "someclass.h"
int main()
{
SomeClass some;
some.do_some_thing(