Loading...
l000p avatar l000p 13 Точки

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 13 Точки

SOLVED

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.