std::auto_ptr mit typedef "umbenennen"
-
Also mit VS2008 funktionier #define ISmartPointer auto_ptr wunderbar.Jedoch gibt es da noch keine unique/shared_ptr.Gibt es für VS2008 irgendwas anderes ??? Es geht mir nur darum, dass Instanzen von Klassen später freigegeben werden, sonst nichts
-
Ich würde ihn ja in DeprecatedDumbPointer umbenenennen.
-

-
scoped_ptrundshared_ptraus Boost.Und sonst halt schnell eine Klasse schreiben, die im Destruktor
deleteaufruft und privaten, nicht implementierten Kopierkonstruktor und Zuweisungsoperator hat. Evtl. noch vor dem Löschen vollständigen Typen mitsizeofsicherstellen.
-
WTF ich mach jetzt folgendes:
ISmartPointer<IGameManager*> _gameManager(new IGameManager());
Wie kann ich jetzt methoden der Instanz _gameManager aufrufen ???
_gameManager->...fail
_gameManager.get()->...fail???
-
Ohh man es ist schon zu spät.Der Stern muss natürlich weg, da es ja schon als Pointer deklariert wird.....
-
Eine aktuelle Version von VS kannst/darfst du nicht nutzen? Würde sich irgendwie anbieten.
-
Ne kann ich gerade nicht, da ich ein paar libs brauche ,die bissher nur auf VS2008 compiliert wurden.
-
Wäre das Portieren der Libs auf VS10 so aufwändig?
-
Template Alias (C++11) Ersatz für C++03
#include <memory> template <typename T> struct s { typedef std::auto_ptr<T> smart_pointer; }; int main() { s<int>::smart_pointer ptr(new int(3)); }Dass besser die Smart Pointer von Boost verwendet werden sollen wurde ja schon erwähnt. Hier nur der allgemeine Ersatz für die C++11 Template Alias.
-
Man kann auch sowas Ähnliches auch durch Ableiten bekommen:
template< class T > class my_ptr : public std::auto_ptr< T > { public: template< class... Args > my_ptr( Args&&... args ) : std::auto_ptr< T >( std::forward< Args >( args )... ) {} //das gleiche noch für assignment };
-
GorbGorb schrieb:
[...]
C++03 ?
-
Swordfish schrieb:
GorbGorb schrieb:
[...]
C++03 ?
Falls variadic templates verfügbar sind, template typedefs aber nicht, ist das eine Lösung. Ansonsten funktioniert es wahrscheinlich auch so passabel (oder man macht noch mal ne Funktion für 2 Parameter rein), bis c++11 verfübar ist:
template< class T > class my_ptr : public std::auto_ptr< T > { public: template< class Arg > my_ptr( const Arg& arg ) : std::auto_ptr< T >( arg ) {} template< class Arg > my_ptr( Arg& arg ) : std::auto_ptr< T >( arg ) {} //das gleiche noch für assignment };
-
theta schrieb:
Template Alias (C++11) Ersatz für C++03
#include <memory> template <typename T> struct s { typedef std::auto_ptr<T> smart_pointer; }; int main() { s<int>::smart_pointer ptr(new int(3)); }Dass besser die Smart Pointer von Boost verwendet werden sollen wurde ja schon erwähnt. Hier nur der allgemeine Ersatz für die C++11 Template Alias.
Jetzt noch das typename davorschreiben.
Furchtbar das der MSVC das durchgehen lässt, aber Microsoft lässt es ja selbst bei Codesamples weg ...
-
Ethon schrieb:
Jetzt noch das typename davorschreiben.
Furchtbar das der MSVC das durchgehen lässt, aber Microsoft lässt es ja selbst bei Codesamples weg ...Furchtbar wäre, wenn sie es nicht durchliessen. Hier brauchts nämlich kein
typename.
-
Nexus schrieb:
Ethon schrieb:
Jetzt noch das typename davorschreiben.
Furchtbar das der MSVC das durchgehen lässt, aber Microsoft lässt es ja selbst bei Codesamples weg ...Furchtbar wäre, wenn sie es nicht durchliessen. Hier brauchts nämlich kein
typename.
