diff options
| author | MenTaLguY <mental@rydia.net> | 2007-03-09 00:32:53 +0000 |
|---|---|---|
| committer | mental <mental@users.sourceforge.net> | 2007-03-09 00:32:53 +0000 |
| commit | d77ff7a722f4336350c65ca2cc53dc19e614a4d0 (patch) | |
| tree | 44b9b9692b2c60aa1ad25a440d4630a481a4f10b /src | |
| parent | specialize MaybeStorage for Rect, and start using reference maybes to (diff) | |
| download | inkscape-d77ff7a722f4336350c65ca2cc53dc19e614a4d0.tar.gz inkscape-d77ff7a722f4336350c65ca2cc53dc19e614a4d0.zip | |
address type-punned pointer warning
(bzr r2583)
Diffstat (limited to 'src')
| -rw-r--r-- | src/gc-soft-ptr.h | 19 |
1 files changed, 8 insertions, 11 deletions
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 <typename T> 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<T *>(_pointer); } + T &operator*() const { return *static_cast<T *>(_pointer); } + T *operator->() const { return static_cast<T *>(_pointer); } + T &operator[](int i) const { return static_cast<T *>(_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; }; } |
