Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Anonymous
unregistriert
Zitat
Um Memory Leaks vorzubeugen kann man aber auch „SmartPointer“ einsetzen
Anonymous
unregistriert
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
/* ------------------------------------------------------------------------------- ********************** - GtcVector class declaration - ************************ ------------------------------------------------------------------------------- */ template< typename T = *void > template< typename Tvalue = GtUInt > class GtcVector : public GtcGenericDataContainer< T > { /* --------------------------------------- ******** Iterator of GtcVector ******** --------------------------------------- */ private: class GtcVectorIterator { friend class GtcVectorIterator; /* ---------------------------------------- ** Data elements of GtcVectorIterator ** ---------------------------------------- */ private: GtcVector *m_pGtcVectorCursor; /* ---------------------------------------- * con/destructors of GtcVectorIterator * ---------------------------------------- */ public: GtcVectorIterator( GtcVector *p_aGtcVector ) : this->m_pGtcVectorCursor( p_aGtcVector ) { } ~GtcVectorIterator() { } /* ---------------------------------------- **** Operators of GtcVectorIterator **** ---------------------------------------- */ public: bool operator!=( GtcVectorIterator aGtcVectorIterator ) const { return( this->m_pGtcVectorCursor != aGtcVectorIterator.m_pGtcVectorCursor ); } GtcVector& operator*() const { return( *m_pGtcVectorCursor ); } GtcVectorIterator& operator++() { ++m_pGtcVectorCursor; return( *this ); } }; /* --------------------------------------- ***** Data elements of GtcVector ***** --------------------------------------- */ private: T *m_pGtcVectorData ; GtcVectorIterator *m_pMyIterator ; Tvalue m_NumberOfElements ; Tvalue m_NumberOfEmtyElements ; Tvalue m_NumberOfOccupiedElements; /* --------------------------------------- ***** con/destructors of GtcVector **** |
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
/* --------------------------------------- ****** Get methods of GtcVector ******* --------------------------------------- */ Tvalue GetNumberOfTotalElements ( void ) const; Tvalue GetNumberOfEmtyElements ( void ) const; Tvalue GetNumberOfOccupiedElements ( void ) const; GtcVectorIterator *GetIterator ( void ) const; /* --------------------------------------- ****** Add methods of GtcVector ******* --------------------------------------- */ void AddElements( Tvalue uiNumberOfNewElements ); void AddElements( GtcVector const &a_GtcVector ); void AddElements( GtcVector const *a_pGtcVector ); /* --------------------------------------- ** Insert/Take methods of GtcVector *** --------------------------------------- */ Tvalue InsertElement( T &tNewElement ) ; &T TakeElement (Tvalue NumberOfElement) const; /* --------------------------------------- ****** Find methods of GtcVector ****** --------------------------------------- */ Tvalue FindElement( T &tElement ) const; /* --------------------------------------- **** Special methods of GtcVector ***** --------------------------------------- */ void DumpAll( void ); void Rebuilt( void ); /* --------------------------------------- ******* Operators of GtcVector ******** --------------------------------------- */ bool operator==(GtcVector const &a_GtcVector, GtcVector const &a_GtcVector ) const; bool operator!=(GtcVector const &a_GtcVector, GtcVector const &a_GtcVector ) const; bool operator> (GtcVector const &a_GtcVector, GtcVector const &a_GtcVector ) const; bool operator< (GtcVector const &a_GtcVector, GtcVector const &a_GtcVector ) const; bool operator>=(GtcVector const &a_GtcVector, GtcVector const &a_GtcVector ) const; bool operator<=(GtcVector const &a_GtcVector, GtcVector const &a_GtcVector ) const; bool operator==(GtcVector const &a_GtcVector, GtcVector const &a_GtcVector ) const; bool operator!=(GtcVector const &a_GtcVector, GtcVector const &a_GtcVector ) const; bool operator> (GtcVector const *a_pGtcVector, GtcVector const *a_pGtcVector ) const; bool operator< (GtcVector const *a_pGtcVector, GtcVector const *a_pGtcVector ) const; bool operator>=(GtcVector const *a_pGtcVector, GtcVector const *a_pGtcVector ) const; bool operator<=(GtcVector const *a_pGtcVector, GtcVector const *a_pGtcVector ) const; &T operator= ( GtcVector const &a_GtcVector ); &T operator= ( GtcVector const *a_pGtcVector ); bool operator< () const &T operator[](GtUInt NumberOfElement) const; &T operator[](GtUInt NumberOfElement); // usw... |
Zitat
Diese Prüfung kannst du aber mittels des Prärpzessors #ifndef steuern, so das sie nur im Debug Modus ausgeführt wird.
Zitat
Das ist schon richtig. Allerdings sollte man SmartPointer höchstens in der Debug-Version benutzen.
Werbeanzeige