c++ - C++ 虚函数传递和工厂函数
问题描述
我正在努力解决家庭作业问题的最后一部分,我遇到了错误
error: passing ‘const string {aka const std::__cxx11::basic_string<char>}’ as ‘this’ argument discards qualifiers [-fpermissive]
nm = name_str;
有问题的构造函数是
Pilot::Pilot(std::string name_str): Aircrew(nm)
{
nm = name_str;
};
带工厂功能
Aircrew *Aircrew::makeAircrew(char ch, std::string name_str){
if(ch == 'P')
return new Pilot(name_str);
在我的头文件中
class Aircrew
{
public:
Aircrew(std::string name_str);
virtual const std::string type(void) const = 0;
virtual const int maxFlights(void) const = 0;
const double maxHours(void) const;
const std::string name(void) const;
void setFlights(int i);
void setHours(double h);
void print(void) const;
virtual void scheduleFlight(int f, double h) const;
static Aircrew* makeAircrew(char ch, std::string name_str);
virtual ~Aircrew(void);
protected:
const std::string nm;
int flightsTaken;
double hoursWorked;
};
class Pilot: public Aircrew
{
public:
Pilot(std::string name_str);
virtual const std::string type(void) const;
virtual const int maxFlights(void) const;
};
现在,根据工厂函数,我正在尝试将名称传递给 const nm 字符串,但我正在努力解决如何做到这一点。我一直在谷歌搜索无济于事。目标是将 name_str 传递给 nm 以便在成员函数名称中我可以做到。
const string Aircrew::name(void) const{
return nm;
}
注意:根据教授,我无法更改头文件中的任何内容。先感谢您!
解决方案
推荐阅读
- apache - Apache htaccess 将根和所有根文件夹重写到子文件夹而不重定向
- r - 麻烦的包创建
- javascript - Firestore 忽略查询中的空字符串值
- ffmpeg - 如何使用 ffmpeg 在相机和直播之间添加延迟,因为 -vf tpad=start_duration 并没有真正延迟网络流输出?
- python - 比较熊猫数据框中的值并返回新值
- javascript - 两个promise,其中一个只有一个then
- r - RMarkdown:如何调整要显示为 ioslides 演示文稿的表格大小?
- python - 返回所有匹配项的正则表达式
- report - OROCRM - 报告和段的“列”部分中不可用的相关实体
- github-actions - 如何查看 Github CI 运行中出了什么问题