C++ 更改动态分配数组中元素的值

C++ 更改动态分配数组中元素的值,c++,class,variable-assignment,dynamically-generated,C++,Class,Variable Assignment,Dynamically Generated,我有两个动态分配的类对象数组——student和staff。当用户输入年龄时,基于年龄,我想更新student数组或staff数组的元素。 但是我下面的代码不起作用。一旦分配给学生,可变人员不会被重新分配给员工。我输入的所有数据只会输入学生,无论我输入的是什么年龄。我的代码有什么问题?如何拥有一个变量并根据条件检查将其分配给一个或其他数组元素 #包括 使用名称空间std; int main() { 班级信息 { 公众: int-unique_-id; 头发颜色; 内部高度; 整数权重; }; 班

我有两个动态分配的类对象数组——student和staff。当用户输入年龄时,基于年龄,我想更新student数组或staff数组的元素。 但是我下面的代码不起作用。一旦分配给学生,可变人员不会被重新分配给员工。我输入的所有数据只会输入学生,无论我输入的是什么年龄。我的代码有什么问题?如何拥有一个变量并根据条件检查将其分配给一个或其他数组元素

#包括
使用名称空间std;
int main()
{
班级信息
{
公众:
int-unique_-id;
头发颜色;
内部高度;
整数权重;
};
班级信息*学生;
学生=新信息[10];
班级信息*员工;
职员=新信息[10];
对于(int i=0;i而言,一旦设置,它就会卡在那里,任何重新分配引用的尝试都将被解释为分配给引用变量的请求。这意味着

person = staff[i];
实际上正在将
staff[i];
复制到
person
中,这是
student[i]
的别名(
student[i]
将继续接收用户读取的输入

给定当前代码,解决此问题的最简单方法是用指针替换引用,指针可以重置

class info* person = &student[i]; // using pointer

int age ;
cout<< "enter age"<<endl;
cin >> age;

if( age > 18 )
{
    person = &staff[i];  // using pointer, but note: nasty bug still here
                         // You may have empty slots in staff 
}

cout<< "enter unique_id"<<endl;
cin >> person->unique_id; // note the change from . to ->
....

看起来像C++代码。如果你有问题,请把C++标签添加到你的问题。谢谢!如果你有一个引用,代码> INT/RX= X;你认为如果你给这个新的值分配新的值,比如这个代码< Rx=5,<代码>?你认为分配不起作用的线会发生什么?你不会导致问题吗?埃米维索茨基暗示。如果你的导师没有明确禁止使用
std::vector
,那么用它来代替
info*student;
info*staff;
。顺便说一句,你不必写
class info*student;
。编译器并不笨。它知道
info
是一个类。我建议你复习一下synt教科书的ax部分。但是如果你在教科书中找到这样的代码,
std::vector<info> student;
std::vector<info> staff;

for (int i=0; i<10;i++)
{
    info person; // not a pointer. Not a reference. Just a silly old Automatic

    int age ;
    cout<< "enter age"<<endl;
    cin >> age;

    // gather all of the information in our Automatic variable
    cout<< "enter unique_id"<<endl;
    cin >> person.unique_id;
    cout<< "enter height"<<endl;
    cin >> person.height;
    cout<< "enter weight"<<endl;
    cin >> person.weight;

    // place the person in the correct vector
    if( age > 18 )
    {
        staff.push_back(person);
    }
    else
    {
        student.push_back(person);
    }
}