1. 程式人生 > >std::unique_ptr使用incomplete type的報錯分析和解決

std::unique_ptr使用incomplete type的報錯分析和解決

`Pimpl`(Pointer to implementation)很多同學都不陌生,但是從原始指標升級到C++11的獨佔指標`std::unique_ptr`時,會遇到一個`incomplete type`的報錯,本文來分析一下報錯的原因以及分享幾種解決方法~ ## 問題現象 首先舉一個傳統C++中的`Pimpl`的例子 ```c++ // widget.h // 預先宣告 class Impl; class Widget { Impl * pImpl; }; ``` 很簡單,沒什麼問題,但是使用的是原始指標,現在我們升級到`std::unique_ptr` ```c++ // widget.h // 預先宣告 class Impl; class Widget { std::un