[ itf @ 01.08.2006. 12:06 ] @
Može li mi itko na smislenom primjeru objasniti gdje se koristi predložak klase? Općenito, koristim predloške funkcija i znam čemu to, ali za predložak klase ne znam gdje to iskoristiti. |
[ itf @ 01.08.2006. 12:06 ] @
[ Časlav Ilić @ 01.08.2006. 12:52 ] @
Jedan primer koji je meni zatrebao, je tip matrice (u matematičkom smislu, znači sabiranje, množenje, itd.) sa proizvoljnim tipom elemenata — celi brojevi, racionalni (opet posebna klasa), u pokretnom zarezu sa različitom tačnošću...
[ itf @ 01.08.2006. 12:55 ] @
Opet mi se to čini da se može rješiti i predloškom funkcije...
Može li itko napisati ikakav primjer (programski kod) i na tome prikazati čemu to služi? Hvala [ Časlav Ilić @ 01.08.2006. 13:03 ] @
Kako predloškom funkcije? Hoću da mogu da napišem nešto ovako:
Code: Matrix<Rational> A(5); Matrix<Rational> B(5); ... Matrix<Rational> C = A * B; [ itf @ 01.08.2006. 13:25 ] @
Ok, kužim.
[ NrmMyth @ 01.08.2006. 15:40 ] @
Jesi ikada vidio stl::containers
[ kiklop74 @ 01.08.2006. 16:13 ] @
Nabavi knjigu "c++ primer" od Stanley B. Lippman-a . Tu ti je sve do u sitna crveca objasnjeno.
[ X Files @ 01.08.2006. 16:31 ] @
Evo jedan primer, kada ja koristim "predložak klase", ako sam dobro shvatio
šta je predložak klase: Na primer, jedna od cestih situacija u programiranju je: Code: ObjekatTipa1->Enabled = false; ObjekatTipa2->Enabled = false; ObjekatTipa3->Enabled = false; UradiNesto(); ObjekatTipa1->Enabled = true; ObjekatTipa2->Enabled = true; ObjekatTipa3->Enabled = true; E sad, ovde je problem sto ako nesto pukne u UradiNesto(), ni jedan Enabled = true nece biti izvrsen. try/finally nije deo C++ jezika a u BCB-u i nije pouzdan. Poseban slucaj je ako imas "return" negde ranije pa moras da vodis racuna da prethodno i tu Enable-ujes objekte. Tada se poseze za takozvanim RAII mehanizmom (kao kod std::auto_ptr) koji garantuje da ce nakon izlaska iz scope-a biti izvrsen destruktor objekta. Da ne bih pisao posebnu RAII klasu za svaki tip podataka, evo jednog resenja i to za VCL, jer ga koristis: --- H --- Code: template<typename TRAIIDisablerEnabler>class TRAII_DisableEnable { TRAIIDisablerEnabler * AObjectToControl; public: TRAII_DisableEnable( TRAIIDisablerEnabler * ObjectToControl ) { AObjectToControl = ObjectToControl; if( AObjectToControl ) { AObjectToControl->Enabled = false; } } virtual ~TRAII_DisableEnable() { if( AObjectToControl ) AObjectToControl->Enabled = true; } }; --- CPP --- Code: void __fastcall TForm1::Button1Click(TObject *Sender) { TRAII_DisableEnable<TButton> E1( Button1 ); TRAII_DisableEnable<TCheckBox> E2( CheckBox1 ); // UradiNesto(); Sleep( 3000 ); // destruktor ce sve vratiti na mesto Enabled = true; } [ itf @ 02.08.2006. 07:56 ] @
Da... fora je u destruktoru. Hvala
[ kiklop74 @ 02.08.2006. 23:51 ] @
ako je predlozak - template sta je onda ulozak ?
Da cujem predloge :) Copyright (C) 2001-2024 by www.elitesecurity.org. All rights reserved.
|