Fórum pridal Xxar3s, 2. 9. 2019 17:20 do kategórie Sex. Pozri ďalšie diskusie tohto používateľa >

otazky k C++

Názory k téme

  1. 2
    Xxar3s

    36 ročný ujo
    Bratislava

    Mam par otazok k C++

    1. Co pouzit ked chcem niekam dosadit hociaky typ. Viem ze C++ nema spolocneho predka pre vsetky typy tak ako napriklad C# (System.Object), ale existuje k tomu nejaka alternativa? cim sa to zvykne nahradit? Ak si odmyslime parametricky polymorfizmus a genericke parametre. Pointerom na void? Ci existuje aj nieco sofistikovanejsie.

    2. potrebujem typovu reprezentacia hociakej funkcie s hociakym poctom parametrov hociakeho typu a s navratovou hodnotou hociakehop typu. Napr:

    void wrapper(TYPOVA_REPREZENTACIA_VSETKYCH_FUNKCII funkcia) {
    ...
    }

    TYPOVA_REPREZENTACIA_VSETKYCH_FUNKCII = ???

    Teda ked niekde zadam nazov toho typu ktory reprezentuje vsetky funkcie tak tam mozem dosadit hocico co sa da zavolat (funkciu, proceduru, metodu atd). Napr v JS je to predok vsetkych funkcii typ Function. Viem ze C++ nema objektovu hierarchiu (ak si ju sam nevytvorim) takze funkcie nemaju spolocneho predka, ale myslim ze by malo existovat nieco cim sa to da nahradit.

    3. ako zistim pocet parametrov funkcie? Podla moznosti by som chcel aj variantu v compile-time aj v runtime (aj ked ocakavam ze v runtime sa to asi zistit neda)
  2. 3
    Zrkadlovka

    21 ročné dievča
    pod lamelou

    toto fórum sa brutálne hodí do tejto kategórie
  3. 4
    Palec223

    27 ročný muž

    nemas na mysli nieco ako Generické typy? neviem ci to je aj v C++
  4. 5
    Xxar3s

    36 ročný ujo
    Bratislava

    @Zrkadlovka co ty vies ci ma nevzrusuje C++.

    @palec223 C++ ma nieco podobne ako generika, vola sa to sablony a funguje to velmi podobne akurat je to viac staticke a da sa s tym robit kopec veci co sa sa s generikami neda. Ale teraz hladam skor nahradu za System.Object proste nieco kam mozem dosadit hodnotu hociakeho typu. V C sa to riesilo pomocou smernikov ale predpokladam ze C++ uz ma na tento ucel nieco elegantnejsie
  5. 6
    Mnichovcan

    24 ročný chalan
    Nemecko

    Nehladas auto?
  6. 8
    Xxar3s

    36 ročný ujo
    Bratislava

    @mnichovcan ee, keyword auto používam na automatické odvodzovanie typov (type inference), ale ja potrebujem niečo čo zastúpi všetky funkcie. Niečo ako funkcionálny typ alebo aspoň nejaku šabonku ktorá by vedela odtestovať či ide o funkciu (či sa identifikátor dá zavolať). Jednu šablónu som našiel v STL std::is_function_v tu je môj testovací zdroják:

    pastebin.com/Lm7wvM3k

    Lenže tá funguje len na obyčajné funkcie, ale už nie na lambdy :/ čo nechápem prečo. Veď lambda je tiež len funkcia.

    Tiež si viem zadať typovú definíciu presne pre konkrétnu funkciu s konkrétnym typom parametrov a návratových hodnôt:

    pastebin.com/UWNUtg2K

    Lenže ja potrebujem niečo univerzálenšie, čo by mi pustilo všetky funckie bezohľadu na počet a typy argumentov alebo návratových hodnôt. Chápeme sa?
  7. 9
    Midnight

    30 ročný muž
    čo to zase píše?!

    @xxar3s
    1. ano, pointer na void.

    2. nie som si isty, ale nieco v zmysle pointer na funkciu ktora vracia pointer na void a ako parameter berie pointer na void?

    3. reflexiou (reflection)

    k bodu dva: popis mi logiku toho ako chces spustit funkciu ked nepoznas pocet parametrov ktore na spustenie potrebuje. akymkolvek sposobom to skusis obabrat, vrdy nakoniec to co funkciu spusta do nej potrebuje narvat jej parametre, takze to potrebuje vediet ake parametre to su, ci uz formalne syntakticky, alebo cisto neformalne semanticky, aj keby hned vsetky funkcie brali jediny parameter pointer na void, alebo pointer na bit array. vzdy to co tu funkciu spusta aj tak potrebuje vediet co do toho jedneho pola narvat.

    v konecnom dosledku su tvoje otazky nieco na co najlepsia reakcia podla mna je "what are you trying to do/solve?", lebo to znie ze si sa zasekol do tuneloveho videnia o jeden krok nespravnym smerom vpred. cize sprav krok naspat a radsej sa spytaj co sa to vlastne snazis vyriesit, nech ti mozno ludia vedia naznacit spravny smer riesenia daneho problemu, ktory nevyzaduje taketo code smells na ake sa pytas.
  8. 10
    Xxar3s

    36 ročný ujo
    Bratislava

    @midnight ver tomu že to čo potrebujem neni bežné použitie. robím si vo volnom čase vlastný programovací jazyk - funkcionálny jazyk (niečo na štýl haskellu alebo OCAML) jazyk už generuje funkčný kód ale stále má ďaleko od dokončenia aj keď základné jazykové konštrukcie sú už funkcčné. momentálne ten môj jazyk z ast generuje OCAML čo asi nebola najštastnejšia voľba, ale zvažujem že generátor prepíšem tak aby z AST generoval C++. pretože postupom času ako ten jazyk rozširujem o nové featury tak mi to OCAML začalo zvazovať ruky. zvažoval som okrem C++ aj LLVM IR ale to bolo príliš ukecané.

    a k tomu aj navrhujem behové prostredie pre svoj jazyk a potrebujem si nasimlovať napr. curried funkcie v C++ (čo argument to vnorená funkcia), ale zároveň chcem použiť klasické funkcie takže budem musieť urobiť wrapper ktorý mi tú klasickú funkciu obalí a keď ju zavolám s menším počtom argumentov tak mi vráti novú funkciu s predvyplnenými argumentami.

    zatiaľ len skúšam ako to pojde. navrhujem prototyp a keď mi niečo z toho bude fungovať (v kombinácii ešte s niečim) a bude to dostatočne efektívne, tak si podľa toho urobím návrh a nakódim to. a ak všetko pojde ako po masle tak prepíšem generátor
  9. 11
    Xxar3s

    36 ročný ujo
    Bratislava

    ale milujem ked su ludia takto domyslavi a predpojati alebo: "neviem si predstavit na co ti to moze byt, lebo ja som sa s tym este nestretol, takze urcite nieco robis zle"