Ну как так то. вот создаешь ты массив классов bAll = new Buy[n]; где переменная n допустим равна 10 и соответственно номер первого элемента массива "0" а десятого "9" , а ты пытаешься чтото делать с одиннадцатым элементом которого вообще не существует bAll[n].SetCost(Cost); bAll[n].SetName(Name); если тебе нужен всего один объект класса, а не массив из нескольких то делай так bAll = new Buy(); bAll->SetCost(Cost); bAll->SetName(Name);
чуток поругаюсь на всякое разное iCost -- нафига там указатель и возня с выделением памяти? достаточно обычного int. -- void SetName(string Name) { *sName = Name; } сравни с более удобочитаемым void SetName(string Name){*sName = Name;} учебники учат выносить скобку в отдельную строку, но на практике удобнее "одно действие -- одна строка" иначе, пока пролистаешь экран, забываешь что было в начале -- нет ни одного delete -- как выделенная память освобождается?