алгоритмичен въпрос, C++ Advanced, Task07_01 - Register - метод с винаги ретърнваща стойност как да се напише в случая
Здравейте,
какъв е начинът да се разпише кода с винаги ретърнваща стойност, и, да не връща "нулева"/дифолтна за обекта когато няма изпълнено условие?
(хем да не гърми 6-ти тест в Judge, хем VS koмпилаторът да е доволен че методът винаги има ретърнваща стойност )
Company Register::get(int companyId) const {
for (size_t i = 0; i < this->numAdded; i++) {
if ( companiesArray[i].getId() == companyId) {
return companiesArray[i];
}
}
//return ?;
}
Поздрави!
В случая методът връща Company обект, така че nullptr не е вариант. Може би най-правилно от семантична гледна точка е хвърляне на exception - методът не може да си свърши по смислен начин работата, и няма дефиниран специален "празен" обект който да върне, така че остава exception. Това си има performance недостатък, но при така зададен метод е по-добре да е коректно семантично, отколкото да е бързо (но пък exception-и не сме учили)