Я хотел бы создать простое консольное приложение для телефонной книги на С ++. Я не могу использовать контейнеры stl (vector, list, ...), поэтому я должен написать все.
Вот репозиторий Git: Телефонная книга
Person.cpp
#include "pch.h"
#include "Person.h"
#include <stdio.h>
using namespace std;
char* stringcpy(char* destination, const char* source)
{
for (int i = 0; source[i] != '\0'; i++)
{
destination[i] = source[i];
destination[i + 1] = '\0';
}
return destination;
}
Person::Person()
{
firstName = nullptr;
lastName = nullptr;
nickName = nullptr;
address = nullptr;
workPhone = nullptr;
privatePhone = nullptr;
}
Person::Person(const char* pFirstName, const char* pLastName, const char* pNickName, const char* pAddress, const char* pWorkPhone, const char* pPrivatePhone)
{
firstName = new char[strlen(pFirstName) + 1];
lastName = new char[strlen(pLastName) + 1];
nickName = new char[strlen(pNickName) + 1];
address = new char[strlen(pAddress) + 1];
workPhone = new char[strlen(pWorkPhone) + 1];
privatePhone = new char[strlen(pPrivatePhone) + 1];
stringcpy(firstName, pFirstName);
stringcpy(lastName, pLastName);
stringcpy(nickName, pNickName);
stringcpy(address, pAddress);
stringcpy(workPhone, pWorkPhone);
stringcpy(privatePhone, pPrivatePhone);
}
Person::Person(Person & p)
{
delete[] firstName;
delete[] lastName;
delete[] nickName;
delete[] address;
delete[] workPhone;
delete[] privatePhone;
firstName = new char[strlen(p.firstName) + 1];
lastName = new char[strlen(p.lastName) + 1];
nickName = new char[strlen(p.nickName) + 1];
address = new char[strlen(p.address) + 1];
workPhone = new char[strlen(p.workPhone) + 1];
privatePhone = new char[strlen(p.privatePhone) + 1];
stringcpy(firstName, p.firstName);
stringcpy(lastName, p.lastName);
stringcpy(nickName, p.nickName);
stringcpy(address, p.address);
stringcpy(workPhone, p.workPhone);
stringcpy(privatePhone, p.privatePhone);
}
Person::~Person()
{
delete[] firstName;
delete[] lastName;
delete[] nickName;
delete[] address;
delete[] workPhone;
delete[] privatePhone;
}
Person& Person::operator=(Person p)
{
if (this != &p) {
delete[] firstName;
delete[] lastName;
delete[] nickName;
delete[] address;
delete[] workPhone;
delete[] privatePhone;
firstName = new char[strlen(p.firstName) + 1];
lastName = new char[strlen(p.lastName) + 1];
nickName = new char[strlen(p.nickName) + 1];
address = new char[strlen(p.address) + 1];
workPhone = new char[strlen(p.workPhone) + 1];
privatePhone = new char[strlen(p.privatePhone) + 1];
stringcpy(firstName, p.firstName);
stringcpy(lastName, p.lastName);
stringcpy(nickName, p.nickName);
stringcpy(address, p.address);
stringcpy(workPhone, p.workPhone);
stringcpy(privatePhone, p.privatePhone);
}
return *this;
}
bool Person::operator==(Person & p)
{
if (strcmp(firstName, p.firstName) == 0 && strcmp(lastName, p.lastName) == 0 && strcmp(nickName, p.nickName) == 0) {
return true;
}
else
{
return false;
}
}
PhoneBook.cpp
#include "pch.h"
#include "PhoneBook.h"
#include <iostream>
#include <fstream>
PhoneBook::PhoneBook(string pbFileName, int pbSize)
{
fileName = pbFileName;
contacts = new Person[size];
size = pbSize;
currentSize = 0;
}
PhoneBook::~PhoneBook()
{
delete[] contacts;
}
void PhoneBook::addPerson(Person p)
{
if (currentSize < size)
{
contacts[currentSize] = p;
currentSize++;
}
else {
cout << "The phonebook is full!\n";
}
}
void PhoneBook::removePerson(Person p)
{
for (size_t i = 0; i < currentSize; i++)
{
if (contacts[i] == p) {
for (size_t j = i; j < currentSize; j++)
{
if (j == size - 1) {
}
else
{
contacts[j] = contacts[j + 1];
}
}
}
}
currentSize--;
}
void PhoneBook::savePhoneBook()
{
}
void PhoneBook::loadPhoneBook()
{
}
void PhoneBook::printPhoneBook()
{
for (size_t i = 0; i < currentSize - 1; i++)
{
cout << this->contacts[i].firstName;
}
}
main.cpp
// PhoneBook.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include "pch.h"
#include <iostream>
#include "Person.h"
#include "PhoneBook.h"
int main()
{
PhoneBook pb = PhoneBook("MyPhoneBook", 10);
Person p1("FirstName1", "LastName1", "nick1", "Addr1", "+123456789", "06123456789");
pb.addPerson(p1);
Person p2("FirstName2", "LastName2", "nick2", "Addr2", "+123456789", "06123456789");
pb.addPerson(p2);
Person p3("FirstName3", "LastName3", "nick3", "Addr3", "+123456789", "06123456789");
pb.addPerson(p3);
Person p4("FirstName4", "LastName4", "nick4", "Addr4", "+123456789", "06123456789");
pb.addPerson(p4);
pb.printPhoneBook();
}
Когда я хочу запустить свою простую основную функцию, я получаю следующую ошибку В этот момент :
PhoneBook.exe вызвал точку останова. произошло
Спасибо за любые услуги!