我遇到的错误在main.cpp文件中。它告诉我将.getName()设置为公共函数;我相信它是。我如何解决这个问题?
我的代码由两个头文件“abstractsales”和“salesperson”组成。Salesperson继承了abstractsales的所有特征,包括“getName()”函数。但同样,不能在主函数中调用此函数。请注意下面的代码。
抽象销售:
class abstractsales{
private:
// This class has no private variable as it's used for a parent for public functions
public:
string name, position;
int EID, bossID;
/*
* This abstract sales class generalizes the needs for each type of sales person
* for them to adopt in subclasses.
*/
// ===== Get Functions =====
string getName(){
return this->name;
}
字符串
SalesPerson类:
class salesperson : abstractsales{
private:
double commission = 0.05;
double totalSalesProfit;
public:
// Default Constructor
salesperson(){
this->name = "";
this->position = "";
this->EID = 0;
this->bossID = 0;
this->commission = 0.05;
}
// Constructor with appropriate parameters
salesperson(string n, string p, int employeeID, int BID){
this->name = p;
this->position = n;
this->EID = employeeID;
this->bossID = BID;
this->commission = 0.05;
}
// ===== Get Functions =====
double getCommission(){
return this->commission;
}
double getTotalProfit(){
return totalSalesProfit;
}
// Function to add sale to total amount
void addSale(double amt){
totalSalesProfit += amt * commission;
}
};
型
在main.cpp中出现错误:
//附加图像enter image description here
我尝试在salesperson类中初始化get函数;但是,abstractsales用于多个子类。我不确定如何解决这个错误。
2条答案
按热度按时间9rbhqvlz1#
public继承基类。
字符串
sulc1iza2#
在c++中,你可以有 public 继承,或者 private 继承。Public继承看起来像这样:
字符串
私有继承看起来像这样:
型
或
型
换句话说,继承在默认情况下是私有的,即使这不是您大多数时候想要的。
通过公共继承,
Base
的所有公共成员都成为Derived
的公共成员,并且对其用户可见。换句话说,您的派生类继承基类的实现和接口。通过私有继承,
Base
的公共成员变成了Derived
的私有成员。所以你的派生类只继承了基类的实现,而不是基类的接口。在绝大多数情况下,您希望使用公共继承。