我正在做大c ++第2版的问题而我正在上课,我被困在一个问题上。基本上我要上一个名为“人”的班级和一个名为“Pemployee”的班级,我需要编写“Pemployee”的成员函数。
他们给了我实现定义所需的声明。
我不知道怎么做是写调用名,因为它需要调用私有变量“person_data”这是一个人对象,我不能直接访问字符串名但是“人”的成员函数有返回void的“get_name”函数,如果我无法从其他定义返回,我不明白如何返回一个字符串。
这是两个班级。
string_endian.h
再一次,如何调用“Pemployee”get_name来返回person_data私有变量的字符串名称
答案 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;
};