[ Drolja @ 30.10.2006. 15:10 ] @
U ovoj verziji Bilovog studija postoji CLR tip projekta koji na prvi pogled lici na Borlandov bilder.
Recimo kada naznacim event automatski se generise kod sa rutinom koja bi trebalo da opsluzi event, nesto slicno kao kod Borlanda sa razlikom sto se nalazi u hederu.
E sada sto se tice dokumentacije dobri MSDN poseduje mnogobrojne clanke u kojima se govori o izmenama u ovoj verziji i gomila stvari se podrazumeva...
Saznao sam da se objekti tipa textbox mogu stvarati preko gcnew umesto new na koji sam naviko. Takodje ne postoji destruktor nego neki garbage collector resava unistavanje objekata.
Pomoglo bi mi mnogo ako bi neko odvojio vreme da napise par osnovnih koncepta koje sam propustio.
[ Goran Arandjelovic @ 30.10.2006. 15:28 ] @
Objekti se kreiraju na takozvanom kontrolisanom hipu koji je pod kontrolom garbage kolektora...Cemu to? Jednostavno su hteli da oslobode razmisljanja programera da li i kada sme da obrise odredjeni objekat vec ce on biti automatski unisten posto se izgubi i poslednja referenca na njega.

Takodje, native pointeri koje si verovatno do sada koristio vise nemaju smisla jer objekti ne moraju da stoje na fiksnim mestima na kontrolisanom hipu (sem ako to eksplicitno ne zahtevas). Vrsi se pomeranje na managed heapu kako bi se optimizovao pristup njima. Jednostavno, koliko sam ja upoznat, vise nije sistem obicne spregnute liste objekata u memoriji, vec se objekti na kontrolisanom heapu kreiraju tacno jedan iza drugog. Tako da...verovatno si video i u MSDN-u koncept hendlera (pokazivaca na objekte na kontrolisanom hipu...) Njihova vrednost se menja u zavisnosti od toga sta radi GC.
[ Mrav @ 05.11.2006. 22:09 ] @
CLR (common language runtime) je komponenta .net platforme, kada izabereš ovaj tip projekta u stvari ne pišeš čist c++ kod već nešto što u microsoftu nazivaju 'managed' kod koji radi pod .net runtimeom. To omogućava korišćenje c++ za pisanje .net programa, i možda je različito od onoga što si zapravo želeo (možda grešim) otuda ekstenzije tipa gcnew (gc od garbage collector). I dalje možeš pisati obične c++ (recimo uz MFC) programe.

PS: ovako napisan c++ kod (koji sadrži managed delove) neće raditi bez .net frameworka za koji je kompajliran !

Znači nisu oni promenili c++, već su mu dodali ekstenzije koje omogućavaju pozivanje .net frameworka.
[ Drolja @ 07.11.2006. 11:10 ] @
A da li mogu da u CLR projektu pisem kao sto sam dosad navikao, a da koristim mogucnosti brzog razvoja. Kako dinamicki kreirati neku kontrolu? Kako da iskoristim kontrolu koju sam postavio na pocetku - kod Borlandovog buildera kontrola ima atribut name i to predstavlja pointer na objekat u daljem kodu.
[ Goran Arandjelovic @ 08.11.2006. 00:12 ] @
Dinamički kreiraš kontrolu kao i bilo koji drugi objekat.

Code:

Kontrola ^k = gcnew Kontrola(...)


Ovde ti je k hendler (pročitaj koja je razlika između hendlera i pokazivača u standardnom C++-u) na objekat na kontrolisanom hipu.
[ NrmMyth @ 08.11.2006. 11:02 ] @
Citat:
Mrav: Znači nisu oni promenili c++, već su mu dodali ekstenzije koje omogućavaju pozivanje .net frameworka.
Nije istina. Managed C++ je stvoren kao extenzirani C++, ali opet se morao prilagoditi nekim pravilima koja .NET nalaze. Primjerice nasljedjivanje od samo jedne bazne klase.
C++/CLI (ovaj koji se nalazi u VS 2005) je vise-manje novi ispolirani C++ jezik, s novim stvarima i novim pravilima.

Citat:
Drolja: A da li mogu da u CLR projektu pisem kao sto sam dosad navikao, a da koristim mogucnosti brzog razvoja. Kako dinamicki kreirati neku kontrolu? Kako da iskoristim kontrolu koju sam postavio na pocetku - kod Borlandovog buildera kontrola ima atribut name i to predstavlja pointer na objekat u daljem kodu.
Nije to tako lako, jer ne pises s obicnim C++, vec novim C++/CLI. Ako poznas dobro C++ i OOP onda ces brzo pohvatati C++/CLI.
Struktura .NET klasa je dosta slicna Borlandovim klasama, ne doslovno.
[ Mrav @ 08.11.2006. 21:55 ] @
Citat:
Nije istina. Managed C++ je stvoren kao extenzirani C++, ali opet se morao prilagoditi nekim pravilima koja .NET nalaze. Primjerice nasljedjivanje od samo jedne bazne klase.


Nisam znao da su toliko daleko otišli (generalno radim u c#, ali poznajem klasični c++). Prokleti Microsoft :)
Još ako su izbacili podrazumevane parametre funkcija (jedna od osobina c# koja me najviše nervira).
Inače, mislio sam na to da i dalje može da piše klasičan c++ projekat (ne managed ili kombinovani).

Preći ću na gcc ako ovako nastave.
[ NrmMyth @ 09.11.2006. 08:15 ] @
Nisam siguran, ali mislim da C++/CLI nema defaultne parametre.
Moraju nesto zrtvovat za kompatibilnost .NET-u. Tko zna, kako se .NET bude razvijao, mozda se uvede podrska i za to.

Ti mozes pisati unmanaged kod (stari C++) u posebnom projektu Win32 ili Console (nisam davno upalio VS, pa se ne sjecam), a mozes pisati i mjesani bez problema sa:
#pragma unmanaged/managed
Isto tako mozes prepustiti kompajleru da ti pokusa prevesti stari C++ kod u MSIL.

Nemam bas vremena za objasnjavanje, predlazem da procitas koju knjigu, nece ti biti zao.
[ Mrav @ 10.11.2006. 08:44 ] @
Voleo bih da imam vremena za tako nešto :( trenutno izučavam UML jer mi je sve potrebniji za posao.