As I was trying to take advantage of pimpl-idiom and smart pointers to implement my own wrapper around platform-specific GUI components, I encountered a problem I'm unable to solve. The problem is probably with pimpl-idiom and *unique_ptr*, since I don't know what else could be wrong. All errors seem to be linking errors. I get various undefined reference errors while using the code (link below): http://www.cplusplus.com/forum/general/96020/
Here is the list of errors:
> obj\debug_windows\helixirrwidgets\src\helixirrwidgets\Window-windows.o||In
> function `Window':|
> E:\new2\projects\programming\test2\test2\..\..\helixirrwidgets\src\helixirrwidgets\Window.hpp|15|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper>
> >::PointerSmartSafe(HelixirrWidgets::Window::Helper*)'| E:\new2\projects\programming\test2\test2\..\..\helixirrwidgets\src\helixirrwidgets\Window.hpp|15|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper>
> >::PointerSmartSafe(HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper> > const&)'|
> obj\debug_windows\helixirrwidgets\src\helixirrwidgets\Window-windows.o||In
> function `Window':|
> E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|88|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper>
> >::PointerSmartSafe(HelixirrWidgets::Window::Helper*)'| E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|91|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper>
> >::PointerSmartSafe(HelixirrWidgets::Window::Helper*)'| obj\debug_windows\helixirrwidgets\src\helixirrwidgets\Window-windows.o||In
> function `ZN15HelixirrWidgets6Window12save_changesEv':|
> E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|98|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper> >::operator->()
> const'|
> E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|100|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper> >::operator->()
> const'|
> E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|101|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper> >::operator->()
> const'|
> E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|106|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper> >::operator->()
> const'|
> E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|107|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper> >::operator->()
> const'|
> E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|109|undefined
> reference to `GetStockObject@4'|
> E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|111|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper> >::operator->()
> const'|
> E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|112|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper> >::operator->()
> const'|
> E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|114|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper> >::operator->()
> const'|
> E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|118|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper> >::operator->()
> const'|
> E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|119|undefined
> reference to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper> >::operator->()
> const'|
> obj\debug_windows\helixirrwidgets\src\helixirrwidgets\Window-windows.o:E:\new2\projects\programming\helixirrwidgets\src\helixirrwidgets\Window-windows.cpp|120|more
> undefined references to
> `HelixirrWidgets::PointerSmartSafe<HelixirrWidgets::Window::Helper,
> std::default_delete<HelixirrWidgets::Window::Helper> >::operator->()
> const' follow| ||=== Build finished: 16 errors, 0 warnings ===|
How can I overcome this problem?