问题描述
所以我正在创建一个动态数组列表类指针。但是我的构造函数没有从文件中读取任何内容。它没有显示任何错误,我能够运行它。因此,我不确定是否缺少链接指针的内容。
实施代码
#include "S.h"
void S::setSize(int size1)
{
size=size1;
}
S::S (ifstream& fin)
{
int s;
fin>>s;
size=s;
S *ptr = new S[s];
string fname;
string lname;
string address;
for(int i = 0; i<s; i++)
{
fin>>fname>>lname;
getline(fin,address);
ptr[i].setName(fname); //changed to i
ptr[i].setLname(lname);
ptr[i].setAddress(address);
//s++;
}
//cout<<list[0].firstname;
list = ptr;
}
void S::print(ofstream& fout)
{
for(int i=0; i<size; i++)
{
fout<<list[i].getName()<<" "<<list[i].getLname()<<" "<<list[i].getAddress()<<endl;
}
}
驱动程序代码
#include "S.h"
int main()
{
ifstream fin;
ofstream fout;
}
这是我的班级代码。在我的函数实现中,我也实现了设置器。例如:void S :: setName(字符串name1){list-> firstname = name1;}
class S\
{
private:
int size;
string firstname;
string lastname;
string address;
S* list;
public:
S ();
S (ifstream& fin);
void setName(string);
void setSize(int);
void setLname(string);
void setAddress(string);
string getName(){return firstname;}
string getLname(){return lastname;}
string getAddress(){return address;}
int getSize(){return size;}
void print(ofstream&);
};
解决方法
您应该更改周期。您始终将“ s”用作索引。
for(int i = 0; i<s; i++)
{
fin>>fname>>lname;
getline(fin,address);
ptr[i].setName(fname);
ptr[i].setLname(lname);
ptr[i].setAddress(address);
// ptr[s].setName(fname);
// ptr[s].setLname(lname);
// ptr[s].setAddress(address);
}