diff --git a/simgear/structure/SGSharedPtr.hxx b/simgear/structure/SGSharedPtr.hxx index b99a6a8f..a494937b 100644 --- a/simgear/structure/SGSharedPtr.hxx +++ b/simgear/structure/SGSharedPtr.hxx @@ -98,6 +98,8 @@ public: private: void assign(T* p) { get(p); put(); _ptr = p; } + void assignNonRef(T* p) + { put(); _ptr = p; } void get(const T* p) const { T::get(p); } diff --git a/simgear/structure/SGWeakPtr.hxx b/simgear/structure/SGWeakPtr.hxx index c84ae371..78cfab4a 100644 --- a/simgear/structure/SGWeakPtr.hxx +++ b/simgear/structure/SGWeakPtr.hxx @@ -27,6 +27,8 @@ public: { } SGWeakPtr(const SGWeakPtr& p) : mWeakData(p.mWeakData) { } + SGWeakPtr(T* ptr) + { assign(ptr); } template SGWeakPtr(const SGSharedPtr& p) { SGSharedPtr sharedPtr = p; assign(sharedPtr.get()); }