读书人

[对象数组赋值]

发布时间: 2012-04-06 12:22:24 作者: rapoo

求助[对象数组赋值]
如果我需要把( "张三 ", "平安大街三号 ", "北京 ", "100000 "),( "李四 ", "平安大街三号 ", "北京 ", "100000 "),( "王五 ", "平安大街三号 ", "北京 ", "100000 ")分别赋值给下面的三个对象数组,应该怎么写呢?谢谢
#include <iostream.h>
#include <string.h>
class employee
{
private:
char name[30];
char street[30];
char city[18];
char zip[6];
public:
employee();
employee(char *n,char *str,char *ct,char *z);
void change_name(char *n);
void display();
};
employee::employee()
{

}
employee::employee(char *n,char *str,char *ct,char *z)
{
strcpy(name,n);
strcpy(street,str);
strcpy(city,ct);
strcpy(zip,z);
}
void employee::display()
{
cout < <name < < " " < <street < < " ";
cout < <city < < " " < <zip;
}
void main()
{
employee e1[3];

cout < <endl;

}


[解决办法]
用一个比较笨的写法,这样:
employee* e1[3];
char* pChName= "张三 ";
char* pChStreet= "平安大街三号 ";
char* pChCity= "北京 ";
char* pChZip= "100000 ";
e1[0]=new employee(pChName,pChStreet,pChCity,pChZip);

pChName= "李四 ";
pChStreet= "平安大街三号 ";
pChCity= "北京 ";
pChZip= "100000 ";
e1[1]=new employee(pChName,pChStreet,pChCity,pChZip);

pChName= "王五 ";
pChStreet= "平安大街三号 ";
pChCity= "北京 ";
pChZip= "100000 ";
e1[2]=new employee(pChName,pChStreet,pChCity,pChZip);
[解决办法]
对象数组赋值,这是C++自身的一个弱点,没有什么好的办法。通常有两种做法,一种是这样:
employee ep[] = {
employee( "张三 ", "平安大街三号 ", "北京 ", 100000 );
......//以下相同
};

另一种方法是这样的:
typedef exployee* pexployee;
pexployee ep = new pexployee[3];

ep[0] = new exployee( "张三 ", "平安大街三号 ", "北京 ", 100000 );
......//以下相同
delete [] ep;//需要释放掉申请的内存空间
[解决办法]
#include <iostream.h>
#include <string.h>
class employee
{
private:
char name[30];
char street[30];
char city[18];
char zip[7];//这里有错,因为字符串数组最后一个字符必需是 '\0 ', "100000 "的长度为7,
//要改为zip[7];
public:
employee();
void SetInfo(char *n,char *str,char *ct,char *z);
void change_name(char *n);
void display();
};
employee::employee()
{

}
void employee::SetInfo(char *n,char *str,char *ct,char *z)
{
strcpy(name,n);
strcpy(street,str);
strcpy(city,ct);
strcpy(zip,z);
}
void employee::display()
{
cout < < "姓名是 " < <name < < " 街道是 " < <street < < " 所在的城市是 ";
cout < <city < < " 邮政编码是 " < <zip < <endl;;
}
//下面程序可以让你随意的想输入N个雇员的信息
void main()
{
int N;//雇员数量
char strName[30];
char strStreet[30];
char strCity[18];
char strZip[7];
cout < < "请输入你要加入的雇员数量: ";
cin> > N;
employee *e1=new employee[N];
for(int i=0;i <N;i++)
{
cout < < "请输入第 " < <i+1 < < "个雇员的姓名: ";


cin> > strName;
cout < < "请输入第 " < <i+1 < < "个雇员的街道: ";
cin> > strStreet;
cout < < "请输入第 " < <i+1 < < "个雇员所在的城市: ";
cin> > strCity;
cout < < "请输入第 " < <i+1 < < "个雇员的邮政编码: ";
cin> > strZip;
e1[i].SetInfo(strName,strStreet,strCity,strZip);
cout < <endl;
}
for(i=0;i <N;i++)
{
cout < < "第 " < <i+1 < < "个雇员的信息如下: " < <endl;
e1[i].display();
}

}
[解决办法]
忘记释放内存了,晕!下面好了!
#include <iostream.h>
#include <string.h>
class employee
{
private:
char name[30];
char street[30];
char city[18];
char zip[7];//这里有错,因为字符串数组最后一个字符必需是 '\0 ', "100000 "的长度为7,
//要改为zip[7];
public:
employee();
void SetInfo(char *n,char *str,char *ct,char *z);
void change_name(char *n);
void display();
};
employee::employee()
{

}
void employee::SetInfo(char *n,char *str,char *ct,char *z)
{
strcpy(name,n);
strcpy(street,str);
strcpy(city,ct);
strcpy(zip,z);
}
void employee::display()
{
cout < < "姓名是 " < <name < < " 街道是 " < <street < < " 所在的城市是 ";
cout < <city < < " 邮政编码是 " < <zip < <endl;;
}
//下面程序可以让你随意的想输入N个雇员的信息
void main()
{
int N;//雇员数量
char strName[30];
char strStreet[30];
char strCity[18];
char strZip[7];
cout < < "请输入你要加入的雇员数量: ";
cin> > N;
employee *e1=new employee[N];
for(int i=0;i <N;i++)
{
cout < < "请输入第 " < <i+1 < < "个雇员的姓名: ";
cin> > strName;
cout < < "请输入第 " < <i+1 < < "个雇员的街道: ";
cin> > strStreet;
cout < < "请输入第 " < <i+1 < < "个雇员所在的城市: ";
cin> > strCity;
cout < < "请输入第 " < <i+1 < < "个雇员的邮政编码: ";
cin> > strZip;
e1[i].SetInfo(strName,strStreet,strCity,strZip);
cout < <endl;
}
for(i=0;i <N;i++)
{
cout < < "第 " < <i+1 < < "个雇员的信息如下: " < <endl;
e1[i].display();
}
delete []e1;

}

读书人网 >C++

热点推荐