【发布时间】:2019-03-22 02:44:39
【问题描述】:
第一次在这里发帖,但我一直在寻找解决此错误的方法。 我收到错误“字符串下标超出范围”
PhoneBook 是一个类 Contact 对象指针的数组。
static const int maxSize = 10;
Contact* phoneBook[maxSize]; //array of contact pointers
Contact 定义为
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;
}
}
}
}
这里是添加联系人
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() 注释它时它会正常工作。
这是我的错误的图片 (too long to copy and paste)
完整代码
.h https://pastebin.com/TrtQW8Tc
【问题讨论】:
标签: c++ arrays bubble-sort