如何使用相同的成员函数更改相同的不同元素

How do I change different elements of the same with same member function?

本文关键字:相同的不同 元素 函数 成员 何使用      更新时间:2023-10-16

我是C++新手,找不到答案。这是我想写的代码:

#include <iostream>
using namespace std;
class Employee{
private:
    string name;
    string gender;
public:
    void display();
    void update(string);
    Employee(string a, string b){
            name = a;
            gender = b;
    };
    ~Employee(){};
};
void Employee::display(void){
    cout << "Name: " << name << endl;
    cout << "Gender: " << gender << endl;
    }
 void Employee::update(string a){
 /*
   a function that updates either the 
   name element or gender element
   based on which element it is used by.
 */
    }
 int main(){
    Employee employee1 ("Joe","Male");
    Employee employee2 ("Jon","Male");

    employee1.display();
    employee2.display();
    employee1.name.update("Mary");          // This is what I want to do: Same function
    employee2.gender.update("Female");      // for different elements of same type           
    employee1.display();
    employee2.display();
    return 0;
 }

我该怎么做?我想过函数重载,但这两个元素属于同一类型。我不想传递任何额外的值并使代码看起来很糟糕。有什么想法吗?谢谢。

像这样使用二传手和getter:

void Employee::setName(const string &a) {
    this->_name = a; // validate or whatever you need to do
}
const string &Employee::name() const {
    return this->_name;
}
void Employee::setGender(const string &a) {
     // ....
}

正如人们所期望的那样使用

employee1.setName("Mary");
employee2.setGender("Female");

basic_string 类已经实现了一个 'setter':

employee1.name.assign("Mary");
employee2.gender.assign("Female");

如果您想像在问题中写的那样访问namegender,则需要同时public,正如@sop正确指出的那样。