Софтуерно Инженерство
Loading...
+ Нов въпрос
l000p avatar l000p 11 Точки

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 да "инициализира" и останалите абстрактни класове, които трябва да имплементирам. 

Логиката ме напусна и гледам в една точка от доста време като не мога да измисля нищо.
Много ще се радвам някой да ме насочи, защото съм забуксувал на едно място. 

Тагове:
0
C++ Advanced 07/02/2020 23:59:59
l000p avatar l000p 11 Точки

SOLVED

0