c++ - c ++:如何从子类访问基类中的私有私有属性
问题描述
我想创建一个名为的基类Form
和一个名为的子类ShrubberyCreationForm
,问题是我必须使用子类为基类设置值。
我在构造函数中找到了解决它的解决方案,但我找不到复制构造函数和赋值运算符的方法。
基类:
class Form
{
private:
std::string _Name;
bool _isSigned;
unsigned int _reqGradeToSign;
unsigned int _reqGradeToExecute;
public:
Form();
Form( std::string Name, unsigned int reqGradeToSign, unsigned int reqGradeToExecute );
Form( const Form & src );
~Form();
class GradeTooLowException: public std::exception
{
virtual const char * what() const throw();
};
class GradeTooHighException: public std::exception
{
virtual const char * what() const throw();
};
Form & operator = ( const Form & rhs );
std::string getName();
bool getisSigned();
unsigned int getReqGradeToSign();
unsigned int getReqGradeToExecute();
void beSigned( Bureaucrat & brc );
};
子类
class ShrubberyCreationForm: public Form
{
public:
ShrubberyCreationForm();
ShrubberyCreationForm( std::string Name );
ShrubberyCreationForm( const ShrubberyCreationForm & src );
~ShrubberyCreationForm();
ShrubberyCreationForm & operator = ( const ShrubberyCreationForm & rhs );
};
CPP子类:
#include "ShrubberyCreationForm.hpp"
ShrubberyCreationForm::ShrubberyCreationForm(): Form() {}
ShrubberyCreationForm::ShrubberyCreationForm( std::string Name ): Form(Name, 145, 137)
{
}
ShrubberyCreationForm::~ShrubberyCreationForm()
{
}
// The problem here I don't know how to assign the values to the new object
ShrubberyCreationForm::ShrubberyCreationForm( const ShrubberyCreationForm & src )
{
}
ShrubberyCreationForm & ShrubberyCreationForm::operator=( const ShrubberyCreationForm & rhs )
{
}
解决方案
在 C++ 中执行此操作的常用方法是在您的超类中定义一个复制构造函数,该构造函数负责复制/分配给自身。然后,您的子类的复制构造函数和赋值运算符调用它来处理超类。因此,例如,复制构造函数如下所示:
ShrubberyCreationForm::ShrubberyCreationForm( const ShrubberyCreationForm & src )
: Form{src}
{
}
看起来您已经在超类中定义了复制构造函数和赋值运算符,所以这是唯一缺少的部分。对于赋值运算符,这应该是:
Form::operator=(rhs);
推荐阅读
- sql-server - 如何将查询结果分组在同一行中?
- excel - Excel:VBA程序比较两列并突出显示不同的单元格并更改相同单元格的值
- python - 请求表单 Recaptcha
- php - 尝试在 PHP 中回显表单数据时出现 500 错误
- reactjs - react-scroll 中的函数未定义错误
- django - Django 使用 javascript 提供静态 html 文件
- ruby-on-rails - 如果 before_action 属性设置失败,Rails 会提前返回
- python - Keras:预测一系列数字中的匹配项
- c# - 将 Task.WhenAll 与不断增长的任务列表一起使用
- javascript - 在 onClientLoad 事件中从 NotesDocument 加载 JavaScript