c++ - 如何更改结构对象的成员值? (C++ 结构初学者)

标签 c++ class struct iostream

刚开始了解结构,我以为我了解它们的工作原理,使用点运算符访问对象的成员,但我显然不了解,因为下面的 readEmployeeRecord 函数不了解'根本不起作用。我应该怎么做? (代码简短且 self 解释)

非常感谢您花时间向我进一步解释结构!当然,我首先尝试了谷歌,但我找不到一个完全按照我想要的方式输入数据的示例,并且不确定我应该如何去做。

#include <iostream>
#include <iomanip>

using namespace std;

//Employee type
struct Employee{
    float wage;
    char status;
    char dept[4]; //for 3letter department, last position is \0 correct?
};

//function definitions
void readEmpoyeeRecord(Employee staff);
void printEmployeeRecord(Employee staff);

int main(){

    Employee employeeA;
    readEmpoyeeRecord(employeeA);
    printEmployeeRecord(employeeA);
    return 0;
}
void readEmpoyeeRecord(Employee employee){
    cout << "Enter empolyees wage: ";
    cin >> employee.wage;
    cout << "Enter empolyees status (H or S): ";
    cin >> employee.status;
    cout << "Enter empolyees dept (ABC): ";
    cin >> employee.dept;
}
void printEmployeeRecord(Employee staff){
    cout << "Wage:     Status:     Department:" <<endl;
    cout << fixed << setprecision( 2 ) << staff.wage;
}

最佳答案

首先,尝试在 google 上搜索“按引用和按值传递参数”。

您将了解到:

void readEmpoyeeRecord(Employee staff);

按值将变量传递给函数,这意味着在函数内部创建并使用了对象的拷贝,因此原始对象不会被修改,只会修改拷贝。

要获得所需的结果,请使用:

void readEmpoyeeRecord(Employee& staff);

通过引用传递意味着您传递的是完全相同的对象,而不是拷贝。

您的代码基本上会像这样工作:

//create new employee
Employee employeeA;
//call method readEmployeeRecord on a copy of employeeA
readEmpoyeeRecord(employeeA);
//call method printEmployeeRecord on a copy of employeeA
printEmployeeRecord(employeeA);

关于c++ - 如何更改结构对象的成员值? (C++ 结构初学者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8227603/

相关文章:

c++ - 从 void 指针缓冲区进行结构实例化

c++ 到 c#'s "作为”?

c++ - 使用英特尔PIN修改寄存器

c++ - 无法编译合并排序树结构?

C编程如何在另一个头文件中打印出结构的元素?

c++ - 具有匿名结构的不同位映射

c++ - 在 C++ 中,是否有可能在调用我的函数以根据我的程序需要返回不同类型时做一些时髦的事情?

c++ - 按列而不是行存储矩阵

c - 如何在 Ruby C 扩展中创建 Date 对象?

python - 继承在 Python 中实际上做了什么?