Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在类中创建向量,然后在函数中使用类对象无效_C++_Oop_Vector - Fatal编程技术网

C++ 在类中创建向量,然后在函数中使用类对象无效

C++ 在类中创建向量,然后在函数中使用类对象无效,c++,oop,vector,C++,Oop,Vector,我有一个班员工。我正试图让用户插入和删除一名员工,但它不起作用。向量的大小应为500 类员工{ 公众: int max=500; 媒介姓氏; 载体名; 病媒出生日期; 国际假期[500]; 公众: 雇员():姓氏(500){} }; 这是插入的函数,但向量的打印元素根本不起作用: 作废流程(员工ZZ){ 字符串日期年; 字符串datemonth; 字符串dateday; int dateyear1; int datemonth1; int dateday1; 国际现实; int Vacatio

我有一个班
员工
。我正试图让用户插入和删除一名员工,但它不起作用。向量的大小应为500

类员工{
公众:
int max=500;
媒介姓氏;
载体名;
病媒出生日期;
国际假期[500];
公众:
雇员():姓氏(500){}
};
这是插入的函数,但向量的打印元素根本不起作用:

作废流程(员工ZZ){
字符串日期年;
字符串datemonth;
字符串dateday;
int dateyear1;
int datemonth1;
int dateday1;
国际现实;
int Vacationi=0;
对于(int i=0;i<500;i++){
字符串s;
cin>>s;
字符串d;
cin>>d;
字符串c;
cin>>c;
ZZ.姓氏。推回;
ZZ.名字。推回(d);
ZZ.生日。推回(c);

cout此代码有很多错误。但是您所询问的特定问题是由于您的函数通过值传递
Employees
object,因此创建了一个副本,并且您对副本所做的任何更改都不会反映在
main()
中的原始对象中

您需要更改参数以通过引用传递
Employees
对象

作废流程(员工和ZZ)
作废删除员工(员工和ZZ)

也就是说,代码的整体设计总体上不好。向量没有正确地保持同步,因此您使用的向量比实际需要的多,一个
向量
就足够了。并且
Process()
DeleteEmployee())
应该是
Employees
类的成员,而不是单独的函数。它们都访问
姓氏
向量的范围之外

我建议从头开始完全重写代码,例如类似以下内容:

struct Employee{
串姓;
字符串名;
字符串生日;
国际假期;
字符串DisplayName()常量{返回姓氏+“,“+FirstName;}
};
班级员工{
公众:
静态常数int max=500;
向量机员工;
Employees(){Employees.reserve(maxx);}
bool Add(施工人员和设备);
bool Delete(字符串姓氏、字符串名);
};
bool员工::添加(const Employee&e){
if(employees.size()>e.姓氏;
cin>>e.FirstName;
cin>>e.出生日期;
e、 假期=0;//cin>>e.假期;
ZZ.加入(e);
(姓名){
如果(ZZ.删除(姓氏、名)){

你能给我简要介绍一下错误的事情吗?是的,通过引用传递它是正确的,有效的,但是这里{class Employees{public:int maxx=500;vector姓氏;vector FirstName;vector生日;int休假[500];public:Employees():姓氏(500){};}它不会创建一个大小为500的向量我想为每一个创建一个大小为500的向量我搜索了很多,这是我找到的Employees():姓氏(500){}“它不会创建一个大小为500的向量”-你有3个向量和1个固定数组,为什么?你的构造器只对其中1个向量进行了预调整。更糟糕的是,你对它进行了预调整,然后又将500多个元素放入其中。所以你所有的向量/数组都不匹配。为什么你要使用4个单独的向量/数组?1个向量/数组就足够了,只需将每个人的信息放入
struct
/
相反。我添加了一个示例。我希望3个大小为500的向量访问同一索引中的每个员工,例如,在0索引中输入姓氏、名、出生日期,我可以在0索引中全部删除。对不起,我在OOP方面很弱,但当我访问这样的员工姓名时“难道你不需要3个向量吗?正如我在回答中所演示的,1个
结构
/
元素向量就足够了。你的选择不是一个好主意,它很容易出错(正如你原来的代码所演示的那样)