Ahoj.
Řeším následující problém. Programuji optimalizační program v C++, který v závislosti na počátečním nastavení uživatele pro výpočet cílové funkce využívá různé předpisy (normy). Dejme tomu že máme pro výpočet cílové funkce způsob A, který vychází z nějaké normy, a způsob B, který vychází z jiné normy. To jaká norma bude použita nastaví uživatel před spuštěním programu. Zbytek programu je totožný. Během optimalizace se iterativně stále dokola volá ona cílová funkce. Samozřejmě existuje jednoduché řešení: při každém volání cílové funkce se pomocí IF podmínky rozhodnout podle jaké normy má počítat. Ale díky tomu, že by se program musel rozhodovat při každé iteraci mi to přijde trestuhodně neefektivní. Druhá možnost je vytvořit 2 nezávislé kódy a spustit jen ten s požadovanou normou. To je zase trestuhodné z hlediska duplicitního kódu.
Představoval jsem si, že vytvořím 2 různé třídy a při konstrukci objektu použiji zvolenou třídu pomocí IF podmínky. Tím by se program rozhodoval pouze jednou při vytváření objektu, ale při samotném iterování už by byl objekt jasně definovaný. Toto bohužel nefunguje, protože nelze objekty vytvářet v IF podmínkách. Jiný způsob, který by se mi líbil je nastavení správné metody pomocí parametru v konstruktoru. To bohužel asi také nejde.
Jsem začátečník a odpověď jsem nikde nenašel. Tak Vás třeba někoho něco napadne. Díky