Loading...
BobyTopalova avatar BobyTopalova 26 Точки

Task 3 Order

Помислих си, че няма да получа отговор и за тази задача и направих     ( . erase(). - т.е. я изтрих.

 

Здравейте, BobyTopalova,
kolioi добави нов отговор към въпрос за който сте абониран Task 3 Order.

Съдържание на отговора:

Този ред

 

OrderedInserter inserter{ companies };

 

 

 

създава обект (instance) на класа OrderedInserter и го инициализира с празен вектор companies. После четеш компаниите една по една и ги добавяш в companies чрез метода insert() по такъв начин, че компаниите са сортирани по id.

 

Тагове:
0
C++ Programming
BobyTopalova avatar BobyTopalova 26 Точки

Изтрих си въпроса, и условието на 3 задача Task 3 Order. Поучих отговор, но като всеки незнаещ имам още въпроси.

  тук се създава тази инстанция на класа и важно след това да бъде изтрита, което е направено.

        Company* c = new Company();
        lineIn >> *c;
        inserter.insert((const Company*)c);
    }

    for (auto companyPtr : companies) {
        cout << *companyPtr << endl;
        delete companyPtr;
    }

Аз как да достъпя до name и id в класа , който трябва да напиша  companyPtr -> getId();

това не ми е ясно и нали аз трябва да сортирам? Нищо не разбирам.

0
j.petrov_90 avatar j.petrov_90 373 Точки

Привет,

Колегата, @kolioi правилно те е насочил как да решиш задачата.
Това отговаря на въпроса как да решим самата задача.

Относно въпросите, коите задаваш @BobyTopalova изглежда, че не е станало ясно как се работи с пойнтери към даден class.
Например имаме:
std::string name = "Zhivko"
name.erase(name.begin()); //трием първата буква
std::cout << name; //ще отпечата "hivko"

Сега същото нещо, но направено през пойнтър:
std::string name = "Zhivko";
std::string * namePtr = &name; //взимаме адреса на стринга "name"
namePtr->erase(name.begin());  //трием първата буква
std::cout << name; //ще отпечата "hivko"

Сега погледни скелета на класа Company.

class Company {
    std::string name;
    int id;
public:
    std::string getName() const {
        return this->name;
    }

    int getId() const {
        return this->id;
    }
};

Полетата "name" и "id" са private, но можем да достъпим техните стойности (в случая копие на техните стойности), ако ползваме getter функциите "getName()" и "getId()".

Т.е. щом имаме пойнтър кън тип Company, ние можеж да достъпим тези getter-и през него.
Company* c = нещо си.
c->getName() или c->getId().

На отговора дали ти трябва да сортираш - да, ти трябва да сортираш. Това трябва да става директно във функцията .insert() на класа OrderedInserter, който трябва да се имплементира.

1
BobyTopalova avatar BobyTopalova 26 Точки

 Всеки съвет е добър, когато си "изгубен" в кода. На всеки искам да кажа ,че неговият отговор най-много ми е помогнал. Важно е да ни помагате, за да научим нещо. Не бях виждала инстанция на класа и след нея, къдрави скоби. Учебниците, с които разполагам, не ми помагат особено. Сортирането в клас е по-различно, има компаратор, една булева функция,( която ми напомня функтор).

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