Forum » Programiranje » C++ array in klicanje funkcij vsakega elementa
C++ array in klicanje funkcij vsakega elementa
zorangutan ::
Pozdravljeni,
imam nek razred CClass, ki vsebuje recimo 3 funkcije: f1, f2, f3.
Rad bi upravljal pet takih razredov v obliki arraya ali pa nekega "super-classa" in nato klical funkcije f1, f2 in f3 na vseh elementih tega arraya.
Ali obstaja kakšna bolj elegantna rešitev, kot pa je klicanje teh funkcij v for-zanki posamezno na vsakem elementu arraya
Oziroma, če hočem to naredit s superclassom, skrijem takšno for-zanko v interno funkcijo tega superclassa (in enako za ostali dve funkciji f2 in f3):
Hvala za pomoč.
imam nek razred CClass, ki vsebuje recimo 3 funkcije: f1, f2, f3.
Rad bi upravljal pet takih razredov v obliki arraya ali pa nekega "super-classa" in nato klical funkcije f1, f2 in f3 na vseh elementih tega arraya.
Ali obstaja kakšna bolj elegantna rešitev, kot pa je klicanje teh funkcij v for-zanki posamezno na vsakem elementu arraya
for (int i=0; i<5; i++) arrayelement[i].f1();
Oziroma, če hočem to naredit s superclassom, skrijem takšno for-zanko v interno funkcijo tega superclassa (in enako za ostali dve funkciji f2 in f3):
array_superclass.f1();
Hvala za pomoč.
smoke ::
Metode vsakega elementa boš moral v končni fazi itak poklicat, tak da kaj dosti tukaj ne morš nardit. Če ti je for-zanka kot taka grda, lahko mogoče uporabiš C++11 range-based-for, ki zgleda nekak tak:
Tisto z "superclassom" pa ne razumem najbolje kaj bi rad naredil oz. kakšen problem bi naj tak razred rešil.
Lep pozdrav.
int main(int argc, char** argv) { CClass a[5]; for(auto& el : a) { el.f1(); el.f2(); el.f2(); } }
Tisto z "superclassom" pa ne razumem najbolje kaj bi rad naredil oz. kakšen problem bi naj tak razred rešil.
Lep pozdrav.
mallard ::
V tistem CClass definiraj funkcijo, ki pokliče ostale 3 oz. kolikor jih pač je. Recimo ji fx.
CClass a[5]; auto fun = std::mem_fn(&CClass::fx); std::for_each(std::begin(a), std::end(a), fun);
_Dormage_ ::
Torej problem loopa rešiš tako, da nardiš nov class v katerem narediš loop?
Poleg tega, da je bad practice, kaj si sploh rešil? Mogoče samo nisem razumel ?
V vsakem primeru se boš moral sprehoditi po vseh elementi in opraviti ustrezne klice.
Nekateri funkcijski jeziki ponujajo alternative...
Poleg tega, da je bad practice, kaj si sploh rešil? Mogoče samo nisem razumel ?
V vsakem primeru se boš moral sprehoditi po vseh elementi in opraviti ustrezne klice.
Nekateri funkcijski jeziki ponujajo alternative...
cen1 ::
In kaj je narobe z zanko? Čisto legitimna rešitev.
Če rabiš večkrat pa zapakiraj zadevo v funkcijo ki sprejme array objektov in potem to kličeš.
Če rabiš večkrat pa zapakiraj zadevo v funkcijo ki sprejme array objektov in potem to kličeš.
smoke ::
Dobra praksa v C++ (in verjetno tut v drugih jezikih) je, da uporabljaš preverjene stvari (razen če imaš seveda dober razlog, da jih ne), in standardna C++ knjižnica je dobro stestirana. Tako, da je mallardova rešitev s std::for_each in std::mem_fn vbistvu najboljša
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Matematična analiza naloga (strani: 1 2 )Oddelek: Šola | 6445 (4795) | lebdim |
» | Pomoč pri json datotekiOddelek: Programiranje | 1267 (914) | sasha991 |
» | Surjektivno + Injektivno = Bijektivno ... huh!?Oddelek: Šola | 13208 (7959) | Math Freak |
» | c++ two dimensional array v classuOddelek: Programiranje | 1397 (1200) | Senitel |
» | [java] funkcija ekvivalentna print_r v PHPOddelek: Programiranje | 1669 (1432) | sverde21 |