[shared] ExpiringPointer: add constructor to enable pointer casting

This commit is contained in:
Émilie Feral
2019-02-28 14:50:19 +01:00
parent 44a5d02ddf
commit 184d2f0802

View File

@@ -7,12 +7,21 @@ namespace Shared {
template <class T>
class ExpiringPointer {
template<typename U>
friend class ExpiringPointer;
public:
ExpiringPointer(T * rawPointer, bool reinitGlobal = true) : m_rawPointer(rawPointer) {
#if DEBUG
s_global = rawPointer;
#endif
}
template<class U>
ExpiringPointer(ExpiringPointer<U> p) : m_rawPointer(static_cast<T *>(p.m_rawPointer)) {
#if DEBUG
s_global = m_rawPointer;
#endif
}
bool isNull() { return m_rawPointer == nullptr; }
T *operator->() {
#if DEBUG
assert(m_rawPointer != nullptr && m_rawPointer == s_global);