gpt4 book ai didi

c++ - 在 C++ 中创建 Person 对象的数组列表

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:10 27 4
gpt4 key购买 nike

我正在尝试用 C++ 为我的项目创建一个 Person 对象数组列表。我是 C++ 编程的新手,所以我不确定从哪里开始。程序构建成功,但在将 person 对象插入索引 0 的那一行出现了一个奇怪的线程错误。有人可以指出如何将对象插入 arraylist 的正确方向吗?谢谢!

这是我的 Person 类:

#include <iostream>
using namespace std;

class Person
{
public:
string fName;
string lName;
string hometown;
string month;
int day;

Person();
Person(string f, string l, string h, string m, int d);
void print();
int compareName(Person p);

};

Person::Person(string f, string l, string h, string m, int d) {
fName = f;
lName = l;
hometown = h;
month = m;
day = d;
}

void Person::print() {
std::cout << "Name: " << lName << ", " << fName <<"\n";
std::cout << "Hometown: " << hometown <<"\n";
std::cout << "Birthday: " << month << " " << day <<"\n";
}

数组列表.h

#ifndef __Project2__ArrayList__
#define __Project2__ArrayList__

#include <iostream>
#include "Person.h"


class ArrayList {
public:
ArrayList();

bool empty() const {return listSize ==0;}
int size() const {return listSize;}
int capacity() const {return arrayLength;}
void insert(int index, Person *p); //insertion sort
void output();


protected:
Person* per;
int arrayLength;
int listSize;

};
#endif

数组列表.cpp:

#include "ArrayList.h"
#include <iostream>
using namespace std;

ArrayList::ArrayList()
{
arrayLength = 10;
listSize = 0;
}

void ArrayList::insert(int index, Person *p)
{
per[index] = *p;
listSize++;
}


void ArrayList::output()
{
for(int i=0; i<listSize; i++)
{
per[i].print();
}
}

最佳答案

您的指针未初始化,它未指向有效的内存位置。如果您要以这种方式实现数据结构,则需要对其进行初始化,然后检查是否需要在插入时重新分配。

ArrayList::ArrayList(size_t capacity)
{
_capacity = capacity;
_list_size = 0;
// initialize your backing store
_per = new Person[_capacity];
}

您还需要正确处理释放、分配、复制等。

关于c++ - 在 C++ 中创建 Person 对象的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14846801/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com