X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fgc-soft-ptr.h;h=539eac678553dd212672db4c39136075334627ea;hb=c6172c4f6cb97ec651af9a89ea5b55e6cbc24ebd;hp=a055ba38c18342dd8b7d39f4c3210cee1807c267;hpb=cb9b008a8a93da19f2d40795774d10f1bca4423b;p=inkscape.git diff --git a/src/gc-soft-ptr.h b/src/gc-soft-ptr.h index a055ba38c..539eac678 100644 --- a/src/gc-soft-ptr.h +++ b/src/gc-soft-ptr.h @@ -27,19 +27,16 @@ namespace GC { template class soft_ptr { public: - soft_ptr(T * const &pointer=NULL) : _pointer(pointer) { - _register(); - } - soft_ptr(soft_ptr const &other) : _pointer(other._pointer) { + soft_ptr(T *pointer=NULL) : _pointer(pointer) { _register(); } - operator T *() const { return _pointer; } - T &operator*() const { return *_pointer; } - T *operator->() const { return _pointer; } - T &operator[](int i) const { return _pointer[i]; } + operator T *() const { return static_cast(_pointer); } + T &operator*() const { return *static_cast(_pointer); } + T *operator->() const { return static_cast(_pointer); } + T &operator[](int i) const { return static_cast(_pointer)[i]; } - soft_ptr &operator=(T * const &pointer) { + soft_ptr &operator=(T *pointer) { _pointer = pointer; return *this; } @@ -50,11 +47,11 @@ private: void _register() { void *base=Core::base(this); if (base) { - Core::general_register_disappearing_link((void **)&_pointer, base); + Core::general_register_disappearing_link(&_pointer, base); } } - T *_pointer; + void *_pointer; }; }