mieszanie kodu managed i unmanaged a visual c++

0

No wlasnie, ostatnio spotkala mnie ciekawa historia. C++ uczylismy sie najpierw w postaci konsolowej (unmanaged) a potem przeszlismy do visuala (managed) i zaczelismy w nim pisac i robic programy zorientowane obiektowo.

Mialem jakis problem z programem i poszedlem z tym do wykladowcy po wykladzie, ten obejrzal kod i przy okazji ze mi pomogl to powiedzial ze nie powinno sie laczyc "nowego" ze "starym" tj. managed z unmanaged. Powiedzial tak poniewaz programujac wizualnie nie kozystalem z uchwytow ^ tylko z wskaznikow *, zamiast klas referencyjnych mialem zwykle klasy a zamiast gcnew uzywalem new.

No i z kolei moj cwiczeniowec mowil potem na odwrot, ze nie ma roznicy to i ze moge kozystac w visualu z unmanaged... No i tak w sumei zrobilem na potrzeby mojego projektu bo potrzebowalem zadeklarowac cos globalnie zeby bylo widoczne dla kilku Form - w managed by to nieprzeszlo, prawda?

Pytanie - ktory z Panow mial racje, i jak to wyglada w Waszych oczach ;)

Chetnie poslucham dyskusji jaka sie mam nadzieje wywiaze :P

0

Obydwoje. Nie musisz ale powinieneś.
Mieszanie managed/unamnaged jest ostatecznością, tylko w uzasadnionych przypadkach powinieneś mieszać. Mieszanie tylko dlatego, że umie się jedno bardziej od drugiego jest raczej śmieszne i całkowicie błędne. Jak już piszesz w C++/CLI to powinieneś pisać w manged wszystko co się da.

//q: calkowicie sie zgadzam

0

No tez mi sie wydawalo ze piszac q c++/cli powinno sie z tego kozystac, ale musze powiedziec ze napotykalem na wiele przeciwnosci... Zreszta tak samo jak z unmanaged...

Jest duzo roznic, dosc subtelnych ktore uniemozliwily mi pojscie dalej w managed, wiec zmienilem do unmanaged :O

Jak np w managed zadeklarowac obiekty globalnie aby byly dostepne dla kazdej Formy? Gdzies an forum wyczytalem ze sie nie da wlasnie i trzeba kombinowac - jak?

0
karczi napisał(a)

Jak np w managed zadeklarowac obiekty globalnie aby byly dostepne dla kazdej Formy? Gdzies an forum wyczytalem ze sie nie da wlasnie i trzeba kombinowac - jak?
Nie używać obiektów globalnych. Da się, a nawet powinno się. W podejściu obiektowym zmienne globalne nie są potrzebne, a wręcz przeczą zasadom obiektowości min. zasadzie hermetyzacji.
W ostateczności napisz singleton, albo użyj pól/metod statycznych.

0

na temat singletonu wlasnie sobie czyta, a co do slowka static to jak go uzywalem to kompilator wskazywal na bledy typu 'nie mozna uzywac static w managed' ;O

1 użytkowników online, w tym zalogowanych: 0, gości: 1