提问人:Tyler Fortune 提问时间:11/17/2023 更新时间:11/18/2023 访问量:66
C++ - 从父类派生公共函数以在主 .cpp 文件中使用
C++ - Deriving public functions from a parent class to use in main.cpp file
问:
我遇到的错误在主.cpp文件中。它告诉我将 .getName() 设为公共函数;我相信是的。我怎样才能解决这个问题?
我的代码由两个头文件“abstractsales”和“salesperson”组织。Salesperson 继承了 abstractsales 的所有特征,包括 “getName()” 函数。但同样,不能在main中调用此函数。建议下面的代码。
摘要销售:
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 中出现的错误:
附图:在此处输入图片描述
我尝试在销售人员类中初始化 get 函数;但是,AbstractSales 用于多个子类。我不确定如何解决此错误。
答:
1赞
Joseph Larson
11/17/2023
#1
你有 public 继承基类。
class Foo: public Bar { ... }
0赞
Dima
11/18/2023
#2
在 c++ 中,可以有公共继承,也可以有私有继承。公共继承如下所示:
class Derived : public Base {...};
私有继承如下所示:
class Derived : private Base {...};
或
class Derived : Base {...};
换句话说,默认情况下,继承是私有的,即使这不是您大多数时候想要的。
通过公共继承,所有公共成员都成为 的公共成员,并且对其用户可见。换言之,派生类继承了基类的实现和接口。Base
Derived
通过私有继承,公共成员成为 的私人成员。因此,派生类只继承实现,而不继承基类的接口。Base
Derived
在绝大多数情况下,您希望使用公共继承。
评论
0赞
Tyler Fortune
11/20/2023
它现在起作用了!谢谢!
评论
abstractsales
class salesperson : public abstractsales