Problem z auto_ptr

dział ogólny

Problem z auto_ptr

Nowy postprzez Miroo_007 » czwartek, 25 grudnia 2008, 15:29

Witam
Jak do wskaźnika auto_ptr dodać obiekt klasy TStringList:
Kod: Zaznacz cały
#include <memory>
auto_ptr<TStringList> *Lista (new StringList);

Ten kod nie działa. Czy ktoś już się z tym skotkał.
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Problem z auto_ptr

Nowy postprzez Cyfrowy Baron » czwartek, 25 grudnia 2008, 15:53

A Ty co? Nie świętujesz?!

Kod: Zaznacz cały
  1.  
  2. #include <memory>
  3. //------------------------------------------------------------------------
  4.  std::auto_ptr<TStringList>Lista(new TStringList);
  5.  
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z auto_ptr

Nowy postprzez Miroo_007 » czwartek, 25 grudnia 2008, 16:02

He he he - świętuję. Ale teraz muszę się odwoływać do tego obiektu tak?:
Lista.Strings[1] czy jak zawsze Lista->Strings[1].
Nie jestem teraz na swoim kompie więc nie mogę tego sprawdzić.
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Problem z auto_ptr

Nowy postprzez wargo » czwartek, 25 grudnia 2008, 16:08

To jest to samo.
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Problem z auto_ptr

Nowy postprzez Michalos » czwartek, 25 grudnia 2008, 16:50

Cyfrowy Baron napisał(a):A Ty co? Nie świętujesz?!


Cyfrowy Baron napisał(a):Czas to pojęcie względne! Jestem tworem wirtualnym, nie istnieję w realnym świecie, więc pojęcie czasu mnie nie dotyczy.


CB, jak to w końcu jest z Tobą ? :D Twory wirtualne też mają święta :P ?

Pozdrawiam i sorry za OT :)
Avatar użytkownika
Michalos
Bladawiec
Bladawiec
 
Posty: 35
Dołączył(a): niedziela, 19 października 2008, 11:45
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Problem z auto_ptr

Nowy postprzez Cyfrowy Baron » czwartek, 25 grudnia 2008, 16:55

Lista.Strings[1] czy jak zawsze Lista->Strings[1].


Jeżeli definiujesz obiekt tak:

Kod: Zaznacz cały
  TStringList &Lista = *new StringList();


to odwołujesz się do niego tak:

Kod: Zaznacz cały
Lista.Strings[1] = "coÅ› tam";




Jeżeli definiujesz obiekt tak:

Kod: Zaznacz cały
  TStringList *Lista = new StringList();


to odwołujesz się do niego tak:

Kod: Zaznacz cały
Lista->Strings[1] = "coÅ› tam";
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z auto_ptr

Nowy postprzez Miroo_007 » czwartek, 25 grudnia 2008, 17:17

OK. To tylko jeszcze jedno pytanie. Ja ma siÄ™ to tego zapis przy wykorzystanie auto_ptr.
Kod: Zaznacz cały
TStringList &Lista = *new StringList(); ---> auto_ptr<...> ...(...);
TStringList *Lista = new StringList(); ---> auto_ptr<...> ...(...);
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Problem z auto_ptr

Nowy postprzez Cyfrowy Baron » czwartek, 25 grudnia 2008, 17:52

Jedno ma siÄ™ nijak do drugiego.

auto_ptr to wzorzec klasy sprytnego wskaźnika dostępny w bibliotece standardowej C++ (zadeklarowany w nagłówku <memory>) udostępniający podstawową funkcjonalność RAII dla zwykłych surowych wskaźników.

Wzorzec klasy auto_ptr opisuje obiekt przechowujący wskaźnik do zaalokowanego obiektu typu Typ*, dbając o to żeby obiekt na który ten wskaźnik wskazuje został automatycznie zniszczony po opuszczeniu zasięgu.

Klasa auto_ptr ma semantykę ścisłej własności co oznacza że instancja auto_ptr jest jedynym właścicielem obiektu na który ona wskazuje. Przy kopiowaniu auto_ptr, źródłowa instancja ustawia się na wartość null. Przykład:
Kod: Zaznacz cały
      int *i = new int;
      auto_ptr<int> x(i);
      auto_ptr<int> y;

      y = x;

      cout << x.get() << endl;
      cout << y.get() << endl;


Ten kod wypisze dla pierwszego obiektu auto_ptr adres NULL i inny adres dla drugiego, pokazując, że obiekt źródłowy utracił referencje podczas przypisania (=). Nie powinno się wykonywac operacji delete na źródłowym wskaźniku i, bo zostanie on usunięty przez drugi auto_ptr.

Trzeba zauważyć, że obiekt wskazywany przez auto_ptr jest usuwany przez operator delete; oznacza to że auto_ptr można używać tylko dla wskaźników uzyskanych przez operator new. Wyłącza to wskaźniki zwracane przez malloc/calloc/realloc i operator new[].



Sprytny wskaźnik (ang. smart pointer) to abstrakcyjny typ danych symulujący wskaźnik, dodając przy tym nowe funkcje takie jak odśmiecanie albo sprawdzanie zakresów odwołań (bounds checking).
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z auto_ptr

Nowy postprzez wargo » czwartek, 25 grudnia 2008, 18:14

Michalos napisał(a):
Cyfrowy Baron napisał(a):A Ty co? Nie świętujesz?!


Cyfrowy Baron napisał(a):Czas to pojęcie względne! Jestem tworem wirtualnym, nie istnieję w realnym świecie, więc pojęcie czasu mnie nie dotyczy.


CB, jak to w końcu jest z Tobą ? :D Twory wirtualne też mają święta :P ?

Pozdrawiam i sorry za OT :)

Nie widzisz? On się udziela na forum-czyli nie świętuje skoro on uważa że udzielanie się na forum to nie świętowanie tak jak tutaj.
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Problem z auto_ptr

Nowy postprzez Witold » piÄ…tek, 26 grudnia 2008, 12:11

Miroo_007 napisał(a):He he he - świętuję. Ale teraz muszę się odwoływać do tego obiektu tak?:
Lista.Strings[1] czy jak zawsze Lista->Strings[1]


Lista->Strings[1]
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 10 gości

cron