对象的动态数组与指针的动态数组 我目前正在研究两个类似的C++项目。两者都使用类personType,并要求用户提供要保存在数组中的元素数量,然后使用输入的大小创建一个数组。然后,程序将提示用户输入每个元素的个人信息(姓名、地址、出生日期等)。最后,在获得所有元素的所有数据后,程序将输出每个人的数据。这两个程序之间的区别在于,第一个程序将数据存储到personType类的动态数组中,而第二个程序要求personType类的动态数组,其中充满指针。我的程序中指针的动态数组只接受一个元素,然后退出,即使我输入“2”作为元素数也是如此
我试过查看其他S.O.答案(和),但当我尝试添加两个人时,在输入一个人的信息后,程序崩溃/退出对象的动态数组与指针的动态数组 我目前正在研究两个类似的C++项目。两者都使用类personType,并要求用户提供要保存在数组中的元素数量,然后使用输入的大小创建一个数组。然后,程序将提示用户输入每个元素的个人信息(姓名、地址、出生日期等)。最后,在获得所有元素的所有数据后,程序将输出每个人的数据。这两个程序之间的区别在于,第一个程序将数据存储到personType类的动态数组中,而第二个程序要求personType类的动态数组,其中充满指针。我的程序中指针的动态数组只接受一个元素,然后退出,即使我输入“2”作为元素数也是如此,c++,arrays,pointers,computer-science,C++,Arrays,Pointers,Computer Science,我试过查看其他S.O.答案(和),但当我尝试添加两个人时,在输入一个人的信息后,程序崩溃/退出 #include <iostream> #include <iomanip> #include <fstream> #include <string> using namespace std; class personType { public: void setVar(string fn, string ln, string adr, dou
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
class personType
{
public:
void setVar(string fn, string ln, string adr, double hgt, string dob, char gndr);
void getVar(string &fn, string &ln, string &adr, double &hgt, string &dob, char &gndr);
void printVar(string fn, string ln, string adr, double hgt, string dob, char gndr, int num);
private:
string fName;
string lName;
string address;
double height;
string DOB;
char gender;
};
int main(){
int num = 0;
string first;
string last;
string addr;
double hght;
string birthDate;
char gnder;
int index = 1;
cout << "How Many People to Create? ";
cin >> num;
cin.ignore();
personType** personObject = new personType*[num];
for(int i = 0; i < num; i++)
{
personObject[num] = new personType[];
}
for(int i = 0; i < num; i++)
{
personObject[i]->getVar(first, last, addr, hght, birthDate, gnder);
personObject[i]->setVar(first, last, addr, hght, birthDate, gnder);
cout << endl;
cin.clear();
cin.ignore();
}
for(int i = 0; i < num; i++)
{
personObject[i]->printVar(first, last, addr, hght, birthDate, gnder, index);
index++;
}
for( int i = 0; i < num; i++)
{
delete personObject[num];
}
delete [] personObject;
return 0;
}
void personType::setVar(string fn, string ln, string adr, double hgt, string dob, char gndr)
{
fName = fn;
lName = ln;
address = adr;
height = hgt;
DOB = dob;
gender = gndr;
}
void personType::getVar(string &fn, string &ln, string &adr, double &hgt, string &dob, char &gndr)
{
cout << "Enter a First Name:";
getline(cin, fn);
cin.clear();
cout << "Enter a Last Name:";
getline(cin, ln);
cin.clear();
cout << "Enter an Address:";
getline(cin, adr);
cin.clear();
cout << "Enter a Height(inches):";
cin >> hgt;
cin.clear();
cin.ignore();
cout << "Enter a Date of Birth(mm/dd/yyyy):";
getline(cin, dob);
cin.clear();
cout << "Enter a Gender(m/f):";
cin.get(gndr);
cin.clear();
}
void personType::printVar(string fn, string ln, string adr, double hgt, string dob, char gndr, int num)
{
cout << "PERSON " << num << ":" << endl;
cout << "Name: " << fn << " " << ln << endl << "Address: " << adr << endl;
cout << "Height(in inche): " << hgt << endl;
cout << "Date of Birth(mm/dd/yyyy): " << dob << endl;
cout << "Gender(m/f): " << gndr << endl << endl;
}
#包括
#包括
#包括
#包括
使用名称空间std;
类人形
{
公众:
void setVar(字符串fn、字符串ln、字符串adr、双hgt、字符串dob、字符gndr);
void getVar(string&fn、string&ln、string&adr、double&hgt、string&dob、char&gndr);
void printVar(字符串fn、字符串ln、字符串adr、双hgt、字符串dob、字符gndr、int num);
私人:
字符串fName;
字符串名称;
字符串地址;
双高;
字符串DOB;
性别;
};
int main(){
int num=0;
先串;
最后一串;
字符串地址;
双hght;
字符串生日;
查尔·格德尔;
int指数=1;
cout>num;
cin.ignore();
personType**personObject=新personType*[num];
for(int i=0;igetVar(第一个、最后一个、地址、hght、出生日期、gnder);
personObject[i]->setVar(第一个、最后一个、地址、hght、出生日期、gnder);
cout printVar(第一个、最后一个、地址、hght、出生日期、gnder、索引);
索引++;
}
for(int i=0;i
ClassObject* obj = new ClassObject[some number]
在这里,我们在堆空间中创建了一个数组,并使用名为obj的类对象指针指向它,这样我们就可以知道数组从哪里开始
obj[some number]
这样你就可以达到你想要的索引
在第二部分中,我理解了您想要创建指针的动态数组,这将通过指针来完成
ClassObject** pointer = new ClassObject*[some number]
如果我弄错了你的问题,请纠正我。帮你自己一个忙,使用std::vector
@IgorTandetnik我还没有学会,所以我不允许使用它。personObject[num]=newpersontype[];
应该是personObject[I]=newpersontype;
同样地,删除personObject[num]
应为删除个人对象[i]
@IgorTandetnik我犯了一个愚蠢的错误。让我很快测试一下。@IgorTandetnik我很抱歉。我没有看到。我的程序现在运行得很好。你能在下面提供一个答案吗?比较类对象的动态数组和对象指针的动态数组之间的语法吗?我刚刚开始学习指针,并将带阵列的inters已经超过我的能力了。