Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Nudou jsi opuch?
Navštiv Lopuch!

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub C, C++ [ŽP: neomezená] (kategorie Programování) moderuje Šéf Lopuchu.
Archiv

Články

Jak bezpečně ukončit vlákno z DllMain
FastAllocPool - urychlení častých alokací a dealokací
Akce a zpráva jako objekt
Tuply v C++
Efektivní alokátor malých objektů a tady druhý a třetí díl
Šablony: Být vládce kvalifikátorů
Vracíme z funkce objekty
Základy komunikace mezi procesy (ve Windows)
Multiple Interface a Instance Factory
Multithreading v C++ (ve Win32)
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: osajjpc
[ 380 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
bredy 21.8.2009 07:39  779
Zase něco malého o šablonáchJak předělat dvou-parametrovou šablonu na jedno-parametrovou
bredy 9.5.2009 22:46  778
GumyshJe to naprosto správně. Ta funkce vrací referenci,nicméně umí vrátit i null referencí. Je to přesně fuj! a programátor by si to neměl nikdy dovolit. Řešení jsou dvě.Vracet ukazatel,nebo místo null,vyhazovat výjimku.Platí pravidlo,že pokud něco někde vrací ukazatel,musím předpokládat,že může vrátit null.V případě reference to musí vždy vrátit odkaz na platný objekt.
gumysh 9.5.2009 09:03  777
Mno, pokud getUnMarshaledData() vraci ukazatel, tak prekladac nespis cedi skrz zuby i nejake varovani a k uvedene podmince nikdy nedojde; nicmene pokud rikas, ze to funguje a je to jen spatne z hlediska kultury, tak tipuji, ze prislusna funkce vraci referenci a (o moje dobroto) dovoluje si vracet dereferencovany null pointer (tj. "null referenci", kdyby tak sproste slovo melo misto v mem slovniku).
bredy 5.5.2009 12:44  776
mptsHezky... :-)
mpts mpts Je to jinak, ba přesně naopak! 5.5.2009 12:33  775
Bredy [774]: Tak to je snadné a zřejmé: chybí tomu barvy!


if (&(builder.getUnMarshaledData()) == 0)
    throw  Fault_t(builder.getUnMarshaledErrorNumber(),
                   builder.getUnMarshaledErrorMessage());


bredy 5.5.2009 10:34  774
Takovej malej kvízCo je na tomhle zápisu špatně:

    if (&(builder.getUnMarshaledData()) == 0)
        throw  Fault_t(builder.getUnMarshaledErrorNumber(),
                       builder.getUnMarshaledErrorMessage());


Je to vidět na první pohled, bez nutnosti znát prostředí (mimochodem, projekt je OpenSource FastRPC). Uvedená konstrukce funguje, akorát špatně je to z hlediska jakési "štábní kultury"
davpe Davpe 10.4.2009 09:35  773
jasne, na C++ planuju v budoucnu prejit, ale zatim me neuveritelne chytlo Cecko. tak malo veci, a tak velka sila :) a dosahnul jsem presne toho, co jsem potreboval :)
bredy 10.4.2009 09:29  772
DavpeOno to vždycky "nějak" půjde. Otázkou je, jak velkou míru abstrakce jsi s tím systémem "nejak" dosáhnout a jakou to má míru univerzálnosti. Proto se radši uchyluji k C++, kde už nejde o žádný "hack" ale o čistější návhr nabízející mnohem lepší parametry.
davpe Davpe 10.4.2009 09:14  771
no vida, ja si myslel, ze to ani nejde a ja mam dokonce na vyber :D kazdopadne jsem si vybral ukazatel na void a funguje to naprosto skvele a bezproblemove. diky moc!
bredy 10.4.2009 08:36  770
DavpeVíceméně máš několik možností:
a) Makro (implementace příkazů zásobníku makrem, s tím, že jedním parametrem je typ)
b) ukazatel na void (void *)
c) také by to šlo prvky kopírovat do nějakého binárního pole typu char, s tím, že víš, kolik bytů zabírá prvek.
d) Kombinace (třeba a)+c) )
davpe Davpe 10.4.2009 08:29  769
Hoj ;) Ja vim, ze v C neni OOP, ale je tu vubec mozne aspon nejaka znovupouzitelnost? Jde mi o to, ze kdyz si naprogramuju zasobnik pro urcity datovy typ (treba int), jak to udelat, abych jej mohl popuzit i pro jakykoliv jiny DT a oba tyto zasobniky pouzit v jednom programu. datovy typ mam pres typedef. Jde to vubec?
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 5.4.2009 23:29  768
Bredy [764]: Mas pravdu, a proto jsem taky nechtel, aby muj prispevek vyznel "neoptimalizujte". Muj prispevek mel byt spise "optimalizujte predevsim tam, kde to bude mit nejvetsi efekt". Ono rekl bych, ze naprosta mensina z nas pise nejake knihovny, kde pak clovek musi premyslet na kazdem kroku. Nicmene presne ty priklady, ktere uvadis, kde neco bezi 10 hodin versus 9 hodin, pripadne kde rozdily byvaji desitky ci stovky procent, obvykle nebyvaji tim, ze by nekdo zvolil ArrayList, kdyz mel sahnout po LinkedListu (omlouvam se za Javu, ale prece jenom je mi to blizsi), ci obracene, ale spise napriklad tim, ze misto jednoho hromadneho updatu tisice radku v DB dela v cyklu tisic updatu jedineho radku. V takovymhle pripade je pak uz uplne jedno, jestli nekde jinde optimalizoval veci toho charakteru, na ktery jsem narazel.
huh huh 5.4.2009 22:50  767
Že jste to vy, tak jsem pro vás vyrobil userscript pro FF, který umí zvýraznit syntaxi C++. Po jeho nainstalování se v tomto klubu pod textareu pro psaní příspěvku přidá druhá, do které když nakopírujete nějaký kód a kliknete na Zvyrazni, tak se převede na HTML a přidá k příspevku.

Za funkčnost neručím, testováno minimálně, snášenlivost s jinými userscripty netestována vůbec. Získat lze zde.
Jste programátoři, takže error reporty posílejte rovnou s bugfixama, thnx :-)
bredy 5.4.2009 21:06  766
SekoryNejvětší problém šablon je, že se nejedná o funkce, ale o vzory. Funkce z toho teprve vznikne podle použití a to na míru toho co jí zadáš za parametry. A tady je kámen úrazu, protože šablona musí být viditelná všude, kde ji použíješ (celá, včetně těla). Jinak by ji překladač neuměl vygenerovat na míru. Asi jako u makra. Nelze jo tedy pouze nadeklarovat do H souboru a do souboru CPP dát tělo.

Ono to tedy takhle taky jde, ale vyžaduje to, aby někdo do toho CPP nechal vygenerovat všechny varianty, které se používají v celém programu. Jinak ti linker zahlásí onu typickou hlášku o tom, že nemůže najít symbol (funkci), protože zrovna její varianta nebyla vygenerována. Proto se raději šably rvou celé do hlavičkových souborů.
sekory Sekory The journey of thousand miles - starts with a single step. 5.4.2009 20:59  765
Kdokoliv: No to máš samozřejmě pravdu, nicméně si nemyslím, že je od věci se nad tím někdy pozastavit než rychlost naprosto ignorovat.

[ 380 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt