多态性错误C++
Polymorphism Error C++
我正在尝试从这些类创建一个对象,但在此行的main()中出现错误:
employee1->employeeId(29);
该错误只是说"employeeId 设置为受保护",但这应该有效。感谢所有的帮助:)
这是我下面的代码:
代码已删除*
编译器是正确的,employeeId
受到保护。您确定您不是故意使用setEmployeeId
吗?
例如
employee1->setEmployeeId(29);
是的,它是受保护的,因此您不能从main
只能从派生类的方法访问它。而且您不能将其用作函数:employee1->employeeId(29);
它是 int 类型的成员变量。
受保护意味着只有派生(子)类才能看到该成员。 派生类的用户看不到它,就像父类的用户看不到它一样。 在继承中使用"public"不会改变对所有成员的保护,但控制对父级的保护免受子项的用户和/或子项的影响。
这是另一个包含相关信息的线程:私有继承、公共继承和受保护继承之间的区别
作为这里的一般经验法则,您不应该使用 set
方法来简单地返回数据——从风格上讲,这应该是getId()
的;您的二传手实际上应该设置数据。但话又说回来,看起来你的父母已经有一个二传手,所以添加一个吸盘手并从你的孩子身上删除所有东西。
只需遵循此样式,就可以对类进行一些清理。
class Employees{
protected:
int employeeId;
//string name;
public:
void setEmployeeId(int a)
{ employeeId = a; }
int getEmployeeId()
{ return employeeId; }
};
class cashier: public Employees{
public:
// no need for anything here -- the methods you need are inherited
};
int main(){
cashier c;
c.setEmployeeId(29);
cout << "Employee ID: " << c.getEmployeeId() << endl;
}
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'