Софтуерно Инженерство
Loading...
BobyTopalova avatar BobyTopalova 25 Точки

Task 3 Order

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

 

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

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

Този ред

 

OrderedInserter inserter{ companies };

 

 

 

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

 

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

Изтрих си въпроса, и условието на 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 155 Точки

Привет,

Колегата, @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 25 Точки

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

0