Первый пост здесь, но я копался в поисках решения этой ошибки.
Я получаю сообщение об ошибке "строковый индекс вне диапазона"
Телефонная книга - это массив указателей на объект класса Contact.
static const int maxSize = 10;
Contact* phoneBook[maxSize]; //array of contact pointers
, где Контакт определяется как
class Contact
{
public:
Contact();
std::string firstName;
std::string lastName;
std::string name; //lName + fName
std::string phoneNumber;
std::string address;
};
Вот моя функция сортировки пузырьков.
void AddressBook::bubbleSort(Contact phoneBook[], int length)
{
Contact temp;
for (int i = 0; i < length; i++)//for n-1 passes
{
for (int j = 0; j < length - 1; j++)
{
if (phoneBook->name[j] > phoneBook->name[j + 1])
{
temp = phoneBook[j];
phoneBook[j] = phoneBook[j + 1];
phoneBook[j + 1] = temp;
}
}
}
}
вот addContact
void AddressBook::addContact(std::string fName, std::string lName, std::string pNumber, std::string addr)
{
if (isFull())
{
std::cout << "Is full" << std::endl;
return;
}
Contact *contact = new Contact;
contact->firstName = fName;
contact->lastName = lName;
contact->name = lName + ", " + fName;
contact->phoneNumber = pNumber;
contact->address = addr;
std::cout << contact->name + " has been added!" << std::endl;
phoneBook[length] = contact;
length++;
bubbleSort(phoneBook[maxSize], length);
}
и, наконец, где я его использую (source.cpp)
switch (choice)
{
case 1:
addrBook.addContact("Ty", "Le", "6191231234", "1234 State Street");
addrBook.addContact("Zak", "Zachary", "6191231234", "1234 Avenue Drive");
Я точно знаю, что проблема возникает из функции bubbleSort, потому что она будет работать нормально, когда я закомментирую ее из addContact ().
Вот картинка моей ошибки
(слишком долго для копирования и вставки)
ПОЛНЫЙ КОД
.h
https://pastebin.com/TrtQW8Tc
.cpp
https://pastebin.com/EaGBUe9e
источник
https://pastebin.com/1BR5pXZE