Uwagi do porady

sugestie, uwagi propozycje odnośnie funkcjonowania forum

Uwagi do porady

Nowy postprzez kinio » Å›roda, 3 wrzeÅ›nia 2008, 11:28

Witam!

Właśnie wróciłem z wakacji i zauważyłem że na portalu pojawiły się nowe porady, w tym jedna o której wcześniej była mowa że się pojawi.
Tak w ogóle to bardzo fajnie że zostało to umieszczone, mam nadzieje że się to komuś przyda.

Mam tylko dwie uwagi co do porady http://www.cyfbar.republika.pl/differ5.html#d16.

W poradzie znajduje się następujący zapis:
Występuje tutaj również deklaracja funkcji readpipe, którą autor (kinio) umieszcza poza klasą formularza, którą można moim zdaniem pominąć jeżeli zamierzamy korzystać z mechanizmu tylko w obrębie jednego formularza, jeżeli jednak chcemy mieć dostęp do całego mechanizmu nie tylko w jednostce Unit1, lecz również w innych jednostkach projektu to należy zadeklarować tą funkcję, a deklarację obiektu klasy pipeCtrl należy w takim przypadku umieścić w sekcji public. Nie do końca rozumiem celowość definiowania funkcji readpipe poza klasą klasą pipeCtrl, gdyż wydaje mi się iż można by zawrzeć wszystko wewnątrz klasy, nie będę jednak ingerował w bibliotekę, tylko skupię się na sposobie użycia


A więc wyjaśniam. Konstruktor klasy pipeCtrl przyjmuje jako argument wskaźnik do funkcji postaci:
Kod: Zaznacz cały
void (*_read_function)(char*)

Jest to wskaźnik do zwykłej funkcji, nie do metody czyli funkcji składowej klasy. Wskaźniki do metod (jak również pól) składowych klas mają nieco inną semantykę. Nie będę tego tutaj tłumaczył jak się je poprawnie definiuje, tylko powiem, że jeżeli ktoś koniecznie chce zdefiniować odpowiednik funkcji readpipe jako metodę jakiejś klasy to trzeba by przedefiniować konstruktor klasy (oraz wszystkie metody wykorzystujące ten wskaźnik) tak aby zamiast aktualnego wskaźnika przyjmował następujący:
Kod: Zaznacz cały
void (__closure *_read_function)(char*)



Kolejna moja uwaga dotyczy zapisu:
To nie wyczerpuje możliwości tej klasy, a jak zapewnia autor i nie ma powodu mu nie wierzyć, możliwe jest wykorzystanie klasy pipeCtrl do uruchamiania nie tylko konsoli CMD, ale do wszystkich programów konsolowych.

Chodzi o to że CMD jest także programem konsolowym, czyli takim którego standardowym wyjściem jest ekran konsoli. Biblioteka przechwytuje zawartość standartowego wejścia/wyjścia niezależnie od tego jaki program na ten interfejs wystawia dane. Może to być CMD, jak też również zwykły program drukujący hello world za pomocą printf, czy cout. Pipe (rura) służy do połączenia dwóch procesów i przesyłania pomiędzy nimi danych, niezależnie jakie są to procesy.

CB , prosiłbym Cię o jakąś aktualizację porady tak aby nie było niedomówień.

Dzięki z góry, pozdr!
If a machine is expected to be infallible, it cannot also be intelligent.
-- A.Turing
Avatar użytkownika
kinio
Homos antropiczny
Homos antropiczny
 
Posty: 67
Dołączył(a): poniedziałek, 14 lipca 2008, 08:51
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Uwagi do porady

Nowy postprzez Cyfrowy Baron » Å›roda, 3 wrzeÅ›nia 2008, 11:34

Zaktualizowałem...
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Uwagi do porady

Nowy postprzez banita » Å›roda, 3 wrzeÅ›nia 2008, 16:36

kinio napisał(a):...
Jest to wskaźnik do zwykłej funkcji, nie do metody czyli funkcji składowej klasy. Wskaźniki do metod (jak również pól) składowych klas mają nieco inną semantykę. Nie będę tego tutaj tłumaczył ...


w C++ nie istnieje cos takiego jak wskaznik do metody klasy. Sa jednak biblioteki ktore implementuja takowy mechanizm np FastDelegate
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: Uwagi do porady

Nowy postprzez Witold » Å›roda, 3 wrzeÅ›nia 2008, 22:58

banita napisał(a):w C++ nie istnieje cos takiego jak wskaznik do metody klasy

Nie istnieje ?
http://pl.cpp.wikia.com/wiki/FAQ#Typ_wska.C5.BAnika_na_funkcj.C4.99.2Ftyp_wska.C5.BAnika_na_metod.C4.99_i_u.C5.BCycie
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana

Re: Uwagi do porady

Nowy postprzez banita » czwartek, 4 wrzeÅ›nia 2008, 02:35

mechanizm ktory wskazales nie ma w zasadzie żadnego zastosowania. mowiac o konkretnych wskaznikach na metody mialem na mysli tzw delegaty ktore maja sensowne zastosowanie.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: Uwagi do porady

Nowy postprzez Cyfrowy Baron » czwartek, 4 wrzeÅ›nia 2008, 08:50

Też się zastanawiam na praktycznym tego zastosowaniem i zawsze mi wychodzi, że nie ma dla tego żadnego zastosowania...
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Uwagi do porady

Nowy postprzez Witold » czwartek, 4 wrzeÅ›nia 2008, 09:50

kinio wspomniał o wskaźnikach na metody (nie o ich przydatności),
ty napisałeś że takowych nie ma, a nie że są mało użyteczne.

Jestem zielony w C++, a używałem wskaźników do metod (na rzecz *this).
Zresztą to forum o BCB, a w nim jest rozszerzenie dla wskaźników na metody.
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana

Re: Uwagi do porady

Nowy postprzez banita » Å›roda, 10 wrzeÅ›nia 2008, 15:47

Cyfrowy Baron napisał(a):Też się zastanawiam na praktycznym tego zastosowaniem i zawsze mi wychodzi, że nie ma dla tego żadnego zastosowania...


ostatnio przypomnialo mi sie praktyczne zastosowanie tych wskazników, wiec postanowilem tutaj o tym wspomniec. otoz sa one wykozystywane(jako argumenty) przy adaptatorach funkcji: mem_fun i mem_fun_ref z biblioteki STL.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Portal

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość