Re: C++ Makro, template, nebo něco jiného?
Jindroush
jindroush na seznam.cz
Pondělí Září 25 13:25:41 CEST 2023
Prvni dotaz - proc to neni tak, ze IDev je predek a ma membery virtual,
takze pak neni treba to saseni s tim castovanim?
Druhy dotaz - proc jsou tam pointery v tom poli a ne reference? A proc
se to castuje 2x?
Tj. pak se to zkrati na neco jako
rc = devs[deviceIndex].setSomeParam( param );
if( rc )
g_lastError = devs[deviceIndex].lastError();
A setSomeParam bud udelat s promennym poctem argumentu, nebo radeji asi
s default argumenty a tak, aby pro vsechna zarizeni byla stejna.
J.
On 25.09.2023 13:03, Pavel Hudeček wrote:
> Dobrý den všem,
> mějme funkci jako
>
> int doSomeWithDev(unsigned deviceIndex, int param)
> {
> std::vector<IDev*> devs = gDevs->devices();
> IDev* dev = devs[deviceIndex];
> IDevTyp* devt = dynamic_cast<IDevTyp*>(dev);
> if (!devt)
> return UNEXPECTED_ERROR;
> int rc;
> IDevTyp2* devT2;
> IDevTyp3* devT3;
> #ifdef IDevTyp4
> IDevTyp4* devT4;
> #endif
>
> switch(devt->deviceType()) {
> case DEVTYPE2:
> tevT2 = dynamic_cast<IDevTyp2*>(dev);
> if (!tevT2)
> return UNEXPECTED_ERROR;
> rc = tevT2->setSomeParam(param);
> if (rc){
> gLastError = tevT2->lastError();
> }
> break;
> case DEVTYPE3:
> tevT3 = dynamic_cast<IDevTyp3*>(dev);
> if (!tevT3)
> return UNEXPECTED_ERROR;
> rc = tevT3->setSomeParam(param);
> if (rc){
> gLastError = tevT3->lastError();
> }
> break;
> #ifdef IDevTyp4
> case DEVTYPE4:
> tevT4 = dynamic_cast<IDevTyp4*>(dev);
> if (!tevT4)
> return UNEXPECTED_ERROR;
> rc = tevT4->setSomeParam(param);
> if (rc<0) {
> gLastError = tevT4->lastError();
> }
> break;
> #endif
> default:
> gLastError = "Unexpected device type";
> rc = UNEXPECTED_ERROR;
> break;
> }
> return rc;
> }
>
> A takových má být mnoho, s odlišnostmi jen v tom, co bude místo
> ->setSomeParam(param);
> a kolik to bude mít parametrů.
>
> Chtěl bych to nějak zjednodušit, aby ty funkce nebyly tak dlouhý.
> Nějaké nápady?
>
> Díky,
> PH
>
> _______________________________________________
> HW-list mailing list - sponsored bywww.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
--
Jindroush<jindroush na seznam.cz>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20230925/ce1ea190/attachment.htm>
Další informace o konferenci Hw-list