访问派生类C++中的受保护成员
Accessing protected members in derived class C++
void FemaleIn::enterPatientData()
{
cout << "enter name ";
cin >> this->name;
cout << "enter your age ";
cin >> this->age;
cout << "enter your diagnosis ";
cin >> this->diagnosis;
cout << "enter your insurance name ";
cin >> this->insuranceName;
cout << "enter your insurance number ";
cin >> this->insuranceNumber;
}
这是我的代码,这个函数在 FemaleIn 类中,该类派生自 Female,但 Female 也派生自患者。我想做的是我想在患者类中使用受保护的成员。没有错误,但是当我运行程序时,它被脸红了。作为参考,我正在使用矢量来存储基于患者类型的患者对象。像这样 std::vector 患者
class FemaleIn: virtual public Female, virtual public Inpatient
{
public:
FemaleIn();
void parse();
void toString();
void enterPatientData();
protected:
private:
};
class Female: virtual public Patient
{
public:
Female();
protected:
private:
};
class Patient
{
public:
Patient();
virtual void parse();
virtual void toString();
virtual void enterPatientData();
protected:
char* name;
char* SSN;
char* insuranceName;
char* insuranceNumber;
char* age;
char* spouseName;
char* diagnosis;
};
我的问题是如何将派生类的每个值存储到基类(患者)中的成员变量?
仅根据您提供的代码,您似乎没有为char *
成员变量分配任何内存以存储字符串。如果我的假设是正确的,那么您的程序将失败,因为它试图将字符串复制到未指向任何有效内存空间的指针中,这会导致未定义的行为。我将为您提供最小,最好,最安全的编辑,您可以进行这些编辑来解决您的问题。
class Patient
{
public:
Patient();
virtual void parse();
virtual void toString();
virtual void enterPatientData();
protected:
std::string name;
std::string SSN;
std::string insuranceName;
std::string insuranceNumber;
std::string age;
std::string spouseName;
std::string diagnosis;
};
将每个受保护成员变量的类型从char *
更改为std::string
现在将允许您从标准输入中读取字符串并将它们存储在每个成员变量中,并且std::string
对象将根据需要处理所有必要的内存分配(以及在不再使用时清理它)。然后,您应该能够按原样FemaleIn::enterPatientData
使用函数,因为语法是正确的。
除此之外,正如其他人指出的那样,您可能希望重新考虑您的类层次结构设计,但这在这里应该不是问题。您可能还需要重新考虑如何存储某些类型的变量(例如,age
可能更好地存储为int
)。
相关文章:
- C++:无法访问声明的受保护成员
- 相同的层次结构,访问基类的受保护成员时的行为不同
- 同一模板类但模板类型的受保护成员
- 派生类无法访问基类的受保护成员
- 继承期间受保护成员的皮条
- 如何将超类的受保护成员访问到其派生类. 如果已在派生类中声明了具有相同名称的函数?
- 是否可以基于私有/受保护成员分配类枚举?
- 依赖模板基础的受保护成员
- 无法从派生类型的作用域访问另一个实例的受保护成员
- 为什么我无法使用受保护/私有继承访问派生实例中基类的受保护成员?
- 将对象强制转换为派生类以访问父类的受保护成员
- 使从一个基类派生的类能够使用继承的受保护成员
- 派生类如何使用基类的受保护成员
- 访问派生类C++中的受保护成员
- 访问基类的受保护成员
- 如何访问多个继承类中的受保护成员
- 如何从另一个类的基类访问派生类中的受保护成员
- 无法访问派生类中的基本受保护成员!(在虚函数中)
- 如何通过派生类访问基类的受保护成员?
- 如果孩子不需要父母班级的所有受保护成员,这是不好的班级设计吗?