C++,C++/CLI, C# i MultipleInheritance

0

przykuł moją uwagę właśnie przykład na C#Online.
~w jaki sposob rozwiazywac niejednoznacznosci wiazania nazw metod przy interfejsach
http://en.csharp-online.net/ECMA-334:_20.2.5_Interface_member_access
przyklad numer 3

ten sam 'problem' co z MI w C++, to samo rozwiazanie - bezkosztowy cast. niech mi ktos jeszcze powie, ze w C# nie ma MI bo sa interfejsy i one rozwiazuja 'problemy' z nim zwiazane :))))

0

wow, zaczynam coraz bardziej lubić ten język - jeśli język nie dopuszcza konstrukcji, którymi można sobie strzelić w stopę, to jest to dla mnie język ograniczony :) C# jak widać nie jest - i dobrze, chociaż pewnie znajdą się tacy, którzy sądzą inaczej.

Inna sprawa, że zawsze fascynują mnie ludzie, którzy wychwalają interfejsy, i krytykują C++ za ich brak. Przecież to po prostu okrojone klasy, która mają same funkcje abstrakcyjne i nie posiadają składowych. Czy ja czegoś nie wiem? Ograniczony do kilku języków się robię - może w jakimś 'modern' wygląda to inaczej.

A i śmieszna ciekawostka mi się przypomina w związku z C++. Borland C++ Builder w którejś wersji (4??) ma buga i nie pozwala na tworzenie klas abstrakcyjnych, które posiadają składowe - musi być czyściutki abstract - czyli Borland już wiele lat temu silnie wspierał programowanie w oparciu o interfejsy ;)

PS. 4 razy czytałem twojego posta w kółko zanim dotarło do mnie w końcu, żeś Ty założył pierwszy wątek od kilku m-cy, który służy do pogadania, a nie do "rozwiązania problemu, bo mam taki jeden" :D

0

ano:) wsiaklem znowu w starej lokalizacji firmy, gdzie to IRC nie dziala, a jak zwykle nie ma czasu na szukanie obejscia:|
szczerze, tymi interfejscami w .Net mozna sobie niezla dziure w stopie zrobic.. (btw. @abstrakcyjne - ok, ale niekoniecznie wirtualne! ). na powyzszy wycinek wpadlem gdy szukalem materialow o 'explicit interface implementation' i mi sie nagle wesolo zrobilo:)

tak w ogole, explicit interf impl, niby taka prosta rzecz ale.. sprobuj w klasie bazowej zaimplementowac explicite np. IEnumerable i potem w pochodnej rowniez zaimplementowac IEnumerable i chciec skorzystac z tego bazowego.. standardowe base.callMethod() nie dziala. makabra, nie da sie. ni hu hu. kazda proba castowania konczy sie wolaniem siebie samego. jedyna droga to reflection:) explicit interf impl sa bowiem .... realizowane jako metody prywatne! i ich nazwa to fullname.. czyli taka metoda nazywa sie doslownie "System.Collection.IEnumerable.GetEnumerator" i pozniej specjalnymi mechamiznami jest wiazana z explicit-interface-mapping.. bleh.

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