Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pitanje/zadatak o sablonima i pokazivaci na njih same.

[es] :: C/C++ programiranje :: Pitanje/zadatak o sablonima i pokazivaci na njih same.

[ Pregleda: 3309 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DDMM
Dejan D. M. Milosavljevic
Danguba
Gajba, ali ne piva.

Član broj: 2544
Poruke: 89
*.vdial.verat.net

Sajt: www.ddmrm.com


Profil

icon Pitanje/zadatak o sablonima i pokazivaci na njih same.28.10.2003. u 15:00 - pre 216 meseci
Situacija sledeca:

template< typename _Sadrzaj >
class A
{
public:
A(){}

// ostalo ...

protected:
_Sadrzaj M_sadrzaj;
};

E sad kako da mi taj sadrzaj bude std::vector<A*> ili std::map<std::string, A*> ili bilo sta sto je pokazivac na A ciji je _Sadrzaj opet std::vector<A*> ili std::map<std::string, A*> ili bilo sta sto je pokazivac na A ciji je sadrzaj opet, ... ?

Samo bez nasledjivanja molim.

U pojedinim situacijama treba da je: double , int, string.







X
 
Odgovor na temu

sspasic
Sasa Spasic

Član broj: 3261
Poruke: 175
*.medianis.net

Jabber: sspasic@elitesecurity.org
ICQ: 35454521


Profil

icon Re: Pitanje/zadatak o sablonima i pokazivaci na njih same.28.10.2003. u 15:42 - pre 216 meseci
Hm, ako dobro razumem, na kraju od ovakvih struktura dobiješ stablo gde su na različitim nivoima listovi A<int>, A<double>, ...
Ako je ovo slucaj, mislim da nece ici bez nasledjivanja.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Pitanje/zadatak o sablonima i pokazivaci na njih same.28.10.2003. u 16:04 - pre 216 meseci
Prvo, da razjasnimo: nema pokazivača na šablone. A* ne postoji. Možeš samo da specijalizuješ šablon i onda da imaš pokazivač na specijalizaciju: A<int>*, A<double>*, itd. Šabloni nisu tipovi.
 
Odgovor na temu

Cybernoid II

Član broj: 14852
Poruke: 528

Sajt: www.youtube.com/watch?v=7..


+1 Profil

icon Re: Pitanje/zadatak o sablonima i pokazivaci na njih same.28.10.2003. u 16:13 - pre 216 meseci
Nisam dobro shvatio jel hoćeš nešto kao rekurzivni template?
Probao sam tako nešto i nije dozvoljeno.
Ako je u pitanju compozite design pattern, ne može samo sa jednom klasom već sa 2 i nasleđivanjem.
#!/usr/bin/basho
mv frog ancient_pond
echo "Splash!"
 
Odgovor na temu

DDMM
Dejan D. M. Milosavljevic
Danguba
Gajba, ali ne piva.

Član broj: 2544
Poruke: 89
*.vdial.verat.net

Sajt: www.ddmrm.com


Profil

icon Re: Pitanje/zadatak o sablonima i pokazivaci na njih same.29.10.2003. u 11:20 - pre 216 meseci
sspasic rece i procita mi misli:
Citat:
Hm, ako dobro razumem, na kraju od ovakvih struktura dobiješ stablo gde su na različitim nivoima listovi A<int>, A<double>, ...
Ako je ovo slucaj, mislim da nece ici bez nasledjivanja.


Mada zadatak to ne kaze i to ne trazi. To sam kasnije shvatio.

Zadatak kaze da u slucaju A<double> dobijam obican primerak sablona,
dok u slucaju A< vector<*A> > generalizovani cvor na clana liste, stabla, grafa ili vec kako ocu da to koristim. Da detaljisem klasa mora da ima jos neki podatak.

Kako god previse sam isteoretisao pa sam se zagubio i pogresno postavio zadatak.

A evo i resenja (valjda) za ono sto mi treba:

Code:

class Osnovna
 {
  
 };

template < typename _Sadrzaj>
 class A: public Osnovna
 {
   // ...
 
  _Sadrzaj M_sadrzaj;
 };

typedef A<vector<Osnovna*>>      Cvor_Cvor_vektor;
typedef A<map<string,Osnovna*>> Cvor_Cvor_map;
typedef A<int>                            Cvor_int;
typedef A<double>                       Cvor_double;



Malko nasledjivanja ne smeta ( i mora, svidjalo mi se ili ne ), jer svu pamet ocu da odradim u A pa posle samo da typedef-ujem.
E sad treba biti lukav i videti sta ce biti sa curenjem memorije.


A za ono sto mi ne treba a pitah:

Mora da nesto ovako:
Code:

template < typename _Sadrzaj, typename template<typename _Class> _Container>
 class A
 {
  _Container<_Sadrzaj> M_sadrzaj;
 };


tj. mora da budem bas precizno sta ocu i to dal cu kontejner sa jednim ili dva templejt parametra.
Pa ko sto Dragi Tata kaze morace da padnu specijalizacije ili nesto slicno.

Da zakljucim:
Zahvaljujem na savetima i inspiraciji!

I opet zatrazim: bacite neki link koji se bavi ovakvim ili slicnim problemima.




[Ovu poruku je menjao DDMM dana 29.10.2003. u 17:32 GMT]
X
 
Odgovor na temu

Cybernoid II

Član broj: 14852
Poruke: 528

Sajt: www.youtube.com/watch?v=7..


+1 Profil

icon Re: Pitanje/zadatak o sablonima i pokazivaci na njih same.29.10.2003. u 11:48 - pre 216 meseci
Citat:
DDMM:
E sad treba biti lukav i videti sta ce biti sa curenjem memorije.


U std:: imaš

template<class T>
class auto_ptr {
public:
typedef T element_type;
explicit auto_ptr(T *p = 0) throw();
auto_ptr(const auto_ptr<T>& rhs) throw();
auto_ptr<T>& operator=(auto_ptr<T>& rhs) throw();
~auto_ptr();
T& operator*() const throw();
T *operator->() const throw();
T *get() const throw();
T *release() const throw();
};
The class describes an object that stores a pointer to an allocated object of type T. The stored pointer must either be null or designate an object allocated by a new expression. The object also stores an ownership indicator. An object constructed with a non-null pointer owns the pointer. It transfers ownership if its stored value is assigned to another object. The destructor for auto_ptr<T> deletes the allocated object if it owns it. Hence, an object of class auto_ptr<T> ensures that an allocated object is automatically deleted when control leaves a block, even via a thrown exception.

Dakle sve objekte praviš kao dinamičke sa new a auto_ptr kao scope.

http://cpptips.hyperformix.com/Templates.html
http://roots.dnd.no/2001/speak...elika/PatternsandTemplates.pdf
http://www.ic.unicamp.br/~cmbm/geoinfo/papers/pag93a99.pdf



#!/usr/bin/basho
mv frog ancient_pond
echo "Splash!"
 
Odgovor na temu

sspasic
Sasa Spasic

Član broj: 3261
Poruke: 175
*.medianis.net

Jabber: sspasic@elitesecurity.org
ICQ: 35454521


Profil

icon Re: Pitanje/zadatak o sablonima i pokazivaci na njih same.29.10.2003. u 12:30 - pre 216 meseci
auto_ptr ne bi smeo da se koristi za npr. std::vector<std::auto_ptr<NekaKlasa> >.
Razlog je to sto operator= menja i objekat koji se kopira (ne secam se kako se tacno zove ova osobina).
U VC++ 6.0 nece biti problema zato se njegov std::auto_ptr ne ponasa u skladu sa standardom.

Treba koristiti boost:shared_ptr ili nesto slicno ili u destruktoru klase A obrisati sve objekte iz kontejnera.
 
Odgovor na temu

Cybernoid II

Član broj: 14852
Poruke: 528

Sajt: www.youtube.com/watch?v=7..


+1 Profil

icon Re: Pitanje/zadatak o sablonima i pokazivaci na njih same.29.10.2003. u 13:26 - pre 216 meseci
U pravu si
Citat:

auto_ptr::operator=

An assignment operator that transfers ownership from one auto_ptr object to another.


Ovo može da predstavlja problem jer operator= obično kopira, a ne preotima sadržaj.

Iako imam VC++ 6.0 sp5 objekte brišem eksplicitno jean po jedan u petlji unutar destruktora ili koristim svoju implementaciju pametnih pokazivača.
U početku sam koristio auto_ptr i nije htelo da radi kako treba kad sam prenosio kod na gcc ili BC.
Imao sam i nekih drugih problema sa MSVC STL koji neke stvari odrađuje na drugačiji (nestandardan) način.

Ima li negde spisak nekompatibilnosti?


#!/usr/bin/basho
mv frog ancient_pond
echo "Splash!"
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Pitanje/zadatak o sablonima i pokazivaci na njih same.29.10.2003. u 17:55 - pre 216 meseci
Citat:
DDMM:

I opet zatrazim: bacite neki link koji se bavi ovakvim ili slicnim problemima.



Mislim da će te ovo zanimati:

http://www.informit.com/conten...9FEB-498B-89B1-2CDBC13F7058%7D
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.microsoft.com



+18 Profil

icon Re: Pitanje/zadatak o sablonima i pokazivaci na njih same.29.10.2003. u 19:17 - pre 216 meseci
Evo klase koja demonstrira upravo to:

Code:

template <typename T> class MyClass
{
public:
    T value;
    vector<MyClass*> list;
};


Kasnije iz svog koda mozes da uradis ovo:

Code:

    MyClass<int> mc;
    mc.value=5;
    mc.list.push_back(&mc);


Nadam se da je to odgovor na tvoje pitanje.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Pitanje/zadatak o sablonima i pokazivaci na njih same.

[ Pregleda: 3309 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.