Word - Task 4 @ Inheritance and Polymorphism SOLVED
Поставям линк към скелета на задачата: ТУК
Здравейте, много ми е неприятно, че миналата тема във форума е от мен, а сега пускам още една. Материалът ми изглеждаше окей до тази задача, но се загубих.
Това което разбрах според скелета е че трябва да имплементираме функция buildCommandInterface :
std::shared_ptr<CommandInterface> buildCommandInterface(std::string& text)
{
std::shared_ptr<CommandInterface> interface = std::make_shared<CommandInterface>(text);
interface->init();
return interface;
}
Така би трябвало да "създадем" командния интерфеис и от там да се случат другите магии.
Функцията init() на CommandInterface ще извика виртуалната функция initCommands, която ще създаде абстрактен клас ToUpperTransform, и ще го запише в съответният key на map member-a.
Като проследим реда на изпълнения се получава така че се извиква функцията handleInput на базовия клас CommandInterface, създаден като обект interface в main функцията :
void handleInput(std::string input) {
std::istringstream parseStream(input);
std::string commandName;
int startInd, endInd;
parseStream >> commandName >> startInd >> endInd;
this->commandTransforms[commandName]->invokeOn(this->text, startInd, endInd);
}
Която от своя страна при достъпването на commandName да извика функцията invokeOn според абстрактният клас записан в поинтъра.
До тук добре, но не се сещам как да накарам initCommands да "инициализира" и останалите абстрактни класове, които трябва да имплементирам.
Логиката ме напусна и гледам в една точка от доста време като не мога да измисля нищо.
Много ще се радвам някой да ме насочи, защото съм забуксувал на едно място.