#pragma once #include "Betriebssystem.h" namespace Framework { template class RCPointer { private: T* pointer; public: static RCPointer of(T* pointer) { return RCPointer() = pointer; } RCPointer() { pointer = 0; } RCPointer(const RCPointer& ptr) { this->pointer = ptr.pointer ? dynamic_cast(ptr.pointer->getThis()) : 0; } ~RCPointer() { if (pointer) pointer->release(); } RCPointer& operator=(RCPointer& ptr) { if (this->pointer) this->pointer->release(); this->pointer = ptr.pointer ? dynamic_cast(ptr.pointer->getThis()) : 0; return *this; } RCPointer& operator=(T* ptr) { if (this->pointer) this->pointer->release(); this->pointer = ptr; return *this; } T* operator->() { return pointer; } operator T*() { return pointer; } }; } // namespace Framework