Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият.
Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание.
Използваме бисквитки и за измерване на маркетинговите ни усилия.
Предполагам, че проблемът идва от конструктора и по точно стойността на companiesArray, но какво трябва да е първоначалното му състояние не съм сигурна.
Правилно - companiesArray не е инициализиран, и като се опитваш да достъпиш елемент на определен индекс, получаваш грешка (по-точно недефинирано поведение), защото достъпваш памет, която не е твоя.
Значи това поле companiesArray е указател, който се ползва като масив. Целият проблем е в това, че този масив не е инициализиран - не е заделена памет за него. Ти даже знаеш, че това трябва да е масив, защото правилно го освобождаваш в деструктора - delete[] companiesArray. Щом така го освобождаваш, как трябва да го заделиш в конструктора? Размерът му също го знаеш - затова имаш параметър в конструктора за броят компании, ако видиш как се ползва класа, ще видиш, че това число е общата бройка компании, които ще бъдат прочетени.
Забила съм тотално. Знам, че структурата за масив е: new T[size] {initializer list}, но не знам какво да правя с инициализационния списък:
Company* companiesArray = new Company[numCompanies] {};
Не ти трябва инициализационният списък - той се ползва само ако искаш да дадеш някакви начални стойности. Ти не искаш да даваш, искаш просто да заделиш паметта, в която по-късно ще добавяш чрез add метода. Тоест просто искаш this->companiesArray = new Company[numCompanies]; в конструктора.
Оттам нататък уловката на задачата е, че не ползваш id-то на компанията за индекс (защото id-то може да е всякаква стойност, а ти искаш последователни индекси, по-малки от заделената памет), а ползваш numAdded - заделяш паметта с numCompanies, обаче numAdded го почваш го от 0 (в конструктора) - то ти е индекса за следващата компания, която се добави. Тоест при add добавяш компанията на индекс numAdded, и увеличаваш numAdded. Това и казва името на тази променлива - това е броят добавени компании "към момента", не е общият брой компании, които ще бъдат добавени.
Много благодаря! Извинявам се, че те занимвам с толкова прости неща
Е, няма проблем, затова съм тук. Не е толкова просто, заради уловката, кара те да мислиш, че бъркаш едно нещо, докато всъщност друго ти прави проблем (индексацията в случая). Затова е хубаво ако забиеш на някоя задача да подхванеш друга и да се върнеш по-късно на тази. Или да се опиташ да подходиш по различен начин към решението - обикновено ако привидно проста задача стане сложна, най-вероятно нещо предполагаш грешно някъде и трябва да премислиш цялото решение.