🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #267704

Re: Ciemna strona C++

#267704
From: Seweryn Habdank-Wojewódzki
Date: Thu, 22 Nov 2007 19:59
112 lines
5391 bytes
Witam

Sebastian Kaliszewski wrote:

> Seweryn Habdank-Wojewódzki wrote:
>>>>A błąd wynika, z
>>>>faktu, że statycznie Pan F. przekazuje tablicę obiektów foo,
>>>
>>>Nie.
>> 
>> A tak. Proszę wróć do tego slajdu i zobacz co kolo robi.
> 
> A nie. Przekazuje wskaźnik do funkcji której interfejs oznacza że oczekuje
> na wskaźnik typu kompatybilnego.

Szkoda, że kompilator to interpretuje jako rzutowanie, a szablon to rozumie.
Zresztą zastosowanie szablonu nie wpływa na poprawność kodu, bo kod sam
generuje potrzebne funkcje, które i tak czy w wersji dynamicznej czy nie i
tak wyglądałyby tak samo. IMHO problem jest wydumany, bo rozwiązanie
okazuje się być proste i skuteczne.
 
>>>>a pobiera
>>>>wskaźnik do obiektów bar -- tam wykonuje ordynarne rzutowanie.
>>>
>>>Nie wykonuje żadnego rzutowania. W C++ do zwykłej funkcji *nie można*
>>>przekazać tablicy. Statycznie przekazuje wskaźnik i to jest tego efekt.
>> 
>> Oh i ah, jaki on wielki.
>> 
>> A mnie się udało to zrobić poprawnie, bo jestem tylko zwykły zjadacz
>> chleba i wolę cieszyć się pozytywami ;-P.
> 
> zwykłej funkcji nie szablonu. Udało ci się przekazać tablicę o statycznie
> ustalonym rozmiarze. 

Nie. Przekazałem statycznie rozwinięty wskaźnik. Chyba musze przypomnieć.

Zamiast czegoś takiego:

void test (A * arr)
{
    printf ("%d\n", sizeof(A));
    arr[0]->m();
    arr[1]->m();
    arr[2]->m();
}

Dałem tak:

template <typename T>
void test(T* arr)
{
    printf ("%d\n", sizeof(T));
    arr[0].m();
    arr[1].m();
    arr[2].m();
}

To działa prosto i skutecznie. No chyba, że masz kontrprzykład -- a masz
duże szanse na posiadanie takowego.

>> Pytanie kontrolne:
>> 
>> Czemu w Javie, C#, C i C++ są "ichnie" GUI, a np. taki Python nie ma
>> swojego? Jak jest taki wielki to niech ma.
> 
> Python ma swoje. W standardowej dystrybucji.

A jak się nazywa może mi powiesz, bo zazwyczaj to o czym słyszę to wszystko
jest obce. Czyżby ideał miał wady?
 
>> Bajka, ja przekazuję typ poprzez wskaźnik, tylko że umnie typ jest
>> poprawnie identyfikowany. Popracuj z tym kodem to zobaczysz jak działa.
>> Tablica może mieć zmienny rozmiar.
> 
> Wtedy też jest do bani. Tracisz dynamiczny polimorfizm.

Co proszę. Pokaż co tracę? Taki kod pokaż co faktycznie coś się dzieje
złego. Zresztą tam nie było polimorfizmu dynamicznego od samego początku.
Tam Pan F. statycznie utworzył obiekty typu foo.
 
> Ps. Chętnie wrócę do tematu kasowania metod w Pythonowych klasach.

Super. Wiedziałem, że mogę liczyć na Twoje wsparcie w tej kwestii. Bo mnie
nie przeszkadza, że python może kasować metody, bo moich C++'owych nie
skasuje, a jak user sobie jakieś wyświetlanie skasuje to jego-kulpa.
 
> To jest ficzer bardzo rzadko przydatny, ale też i rzadko 
> używany i dla newbies przykryty -- grzebanie w __dict__ to zagadnienia dla
> zaawansowanych.

No wiem. Metaklasy również i jest jeszcze perę spraw o których tylko
Py-magicy mogą rozprawiać ;-).

> Kiedy może się przydać? Jak masz logicznie podzieloną aplikację na czas
> inicjalizacji (gdy np. wczytujesz pliki konfiguracyjne, inicjujesz obiekty
> mające życ do końca itd) i czas właściwego wykonania. Wówczas użycie
> niektórych metod wskazane w czasie inicjalizaji jest złym pomeysłem w
> czasie właściwego wykonania -- i można je wywalić.

Ale super, miałem nadzieję, że potrafisz myśleć konstruktywnie, nawet nie
wiesz jak się cieszę, że potrafisz znajdować plusy tam gdzie można mówić o
minusach. 
W operze "Czarodziejski flet" Mozarta, też przemieniają zło w dobro :-D.
Chyba stajesz się pozytywnym bohaterem tego wątku. I tak samo jak
we "Flecie" dopiero w akcie drugim zło zamieniane jest dobro.

Pozdrawiam.

-- 
|\/\/|   Seweryn Habdank-Wojewódzki
 \/\/
Technical Details
Message-ID: <fi4m84$nme$1@news.vectranet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.vectranet.pl!not-for-mail
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh206f$2d6$1@news.supermedia.pl> <fh2ma2$rd0$1@news.vectranet.pl> <fh2po8$d0c$1@news.dialog.net.pl> <fh9v4k$mss$2@bozon2.softax.pl> <fhaest$9or$1@news.vectranet.pl> <fheq5d$iot$1@bozon2.softax.pl> <fhhfae$bj$1@news.vectranet.pl> <fi1ot2$24s$1@bozon2.softax.pl> <fi20va$5ud$1@news.vectranet.pl> <fi45ok$g39$1@bozon2.softax.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.vectranet.pl!not-for-mail
From: Seweryn Habdank-Wojewódzki <shw_mail@wp.pl>
Newsgroups: pl.comp.lang.c
Subject: Re: Ciemna strona C++
Date: Thu, 22 Nov 2007 20:59:20 +0100
Organization: VectraNET - http://www.vectranet.pl
Lines: 113
Message-ID: <fi4m84$nme$1@news.vectranet.pl>
References: <fghgeo$spf$1@nemesis.news.tpi.pl> <fghsb4$kpq$1@news.dialog.net.pl> <fgo4c7$mtu$1@news.vectranet.pl> <20071106073039.433f4934@Vorago> <fgqn9m$74j$2@news.vectranet.pl> <618565031.20071107113041@pkierski.net> <fgt6sh$jov$1@news.vectranet.pl> <fgtb6j$nur$1@news.vectranet.pl> <fgv6ba$k14$1@bozon2.softax.pl> <fgvkne$u3b$1@news.vectranet.pl> <fh1tjd$dtt$1@bozon2.softax.pl> <fh206f$2d6$1@news.supermedia.pl> <fh2ma2$rd0$1@news.vectranet.pl> <fh2po8$d0c$1@news.dialog.net.pl> <fh9v4k$mss$2@bozon2.softax.pl> <fhaest$9or$1@news.vectranet.pl> <fheq5d$iot$1@bozon2.softax.pl> <fhhfae$bj$1@news.vectranet.pl> <fi1ot2$24s$1@bozon2.softax.pl> <fi20va$5ud$1@news.vectranet.pl> <fi45ok$g39$1@bozon2.softax.pl>
Reply-To: shw_mail@wp.pl
NNTP-Posting-Host: 078088193244.osw.vectranet.pl
Mime-Version: 1.0
X-Trace: news.vectranet.pl 1195760709 24270 78.88.193.244 (22 Nov 2007 19:45:09 GMT)
X-Complaints-To: usenet@news.vectranet.pl
NNTP-Posting-Date: Thu, 22 Nov 2007 19:45:09 +0000 (UTC)
User-Agent: KNode/0.10.5
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit