ฉันใช้ pimpl-idiom กับstd::unique_ptr
:
class window {
window(const rectangle& rect);
private:
class window_impl; // defined elsewhere
std::unique_ptr<window_impl> impl_; // won't compile
};
อย่างไรก็ตามฉันได้รับข้อผิดพลาดในการคอมไพล์เกี่ยวกับการใช้ประเภทที่ไม่สมบูรณ์ในบรรทัด 304 ใน<memory>
:
แอปพลิเคชันไม่ถูกต้องของ '
sizeof
' เป็นประเภทไม่สมบูรณ์ 'uixx::window::window_impl
'
เท่าที่ฉันรู้std::unique_ptr
ควรใช้กับประเภทที่ไม่สมบูรณ์ นี่เป็นข้อบกพร่องใน libc ++ หรือฉันทำอะไรผิดที่นี่?