如何从成员函数中获取私有数据? C ++

时间:2015-11-30 01:32:12

标签: c++ function class object member

我正在做大c ++第2版的问题而我正在上课,我被困在一个问题上。基本上我要上一个名为“人”的班级和一个名为“Pemployee”的班级,我需要编写“Pemployee”的成员函数。

他们给了我实现定义所需的声明。

我不知道怎么做是写调用名,因为它需要调用私有变量“person_data”这是一个人对象,我不能直接访问字符串名但是“人”的成员函数有返回void的“get_name”函数,如果我无法从其他定义返回,我不明白如何返回一个字符串。

这是两个班级。

string_endian.h

再一次,如何调用“Pemployee”get_name来返回person_data私有变量的字符串名称

3 个答案:

答案 0 :(得分:1)

书中的错字,Person::get_name应该返回字符串

答案 1 :(得分:0)

当需要从类外部读取或修改变量时,许多编程书籍教会您向类中添加get和set方法。

您需要为您希望值在类外部访问的每个私有变量创建get方法。

如果要更改类外部的值,则需要设置方法。

您班级的get方法示例 protected void Button1_Click(object sender, EventArgs e) { if (rowIndex == ds.Tables[0].Rows.Count - 1 || rowIndex != 0) {

答案 2 :(得分:0)

名为Person的类中的这些签名毫无意义:

void get_name() const;
void get_age() const;

这很可能是一个错字。如果它返回字符串那么它就不会毫无意义。

但是,如果您不想更改函数签名或向Person添加新的memeber,那么您应该将PEmployee声明为Person的朋友,因此PEmployee的成员函数可以访问Person的私有和受保护成员。您可以在下面看到如何执行此操作。

#include <string> 

class PEmployee;

class Person
{
public:
    friend PEmployee;
    Person(){ }
    Person(std::string pname, int page);
    void get_name() const;
    void get_age() const; //returns void
private:
    std::string name;
    int age; // 0 if unknown
};

class PEmployee
{
public:
    PEmployee();
    PEmployee(std::string employee_name, double initial_salary);
    void set_salary(double new_salary);
    double get_salary() const;
    std::string get_name() const; //assuming I need to call person get_name
private:
    Person person_data;
    double salary;
};