[英]composition and inheritance - abstract class
讓我們假設我有一個超級WorkStation
,以及兩個子類StationNormal
, StationAdvanced
。 我有另一個類Robot
,它有一個WorkStation
指針,它將作為StationAdvanced
啟動,但它可以改變,但我的類WorkStation
是一個抽象類。 我認為類Robot
應該是這樣的:
class Robot{
private:
WorkStation * actualStation;
...
}
我的問題是如果我的類WorkStation
是抽象的,應該如何定義Robot類構造函數。
你需要讓StationNormal
和StationAdvanced
繼承WorkStation
一個例子是:
class StationNormal:public WorkStation
{
....
}
public Robot(WorkStation* workStation)
{
actualStation = workStation;
}
在主要方法中,例如:
new Robot(new StationNormal()) ;
我認為以下內容應該足夠了:
class Robot{
private:
WorkStation * actualStation;
public:
Robot();
Robot(WorkStation * w);
}
Robot::Robot() // constructor that takes no arguments
{
actualStation = new StationAdvanced();
}
Robot::Robot(WorkStation * w) // constructor that takes specific WorkStation
{
actualStation = w;
}
您可以使用以下命令調用它:
Robot rob1(),
rob2(new StationAdvanced()),
rob3(new StationNormal());
好吧,在構造函數中,您將實例化實際的WorkStation並告訴指針( WorkStation * actualStation
)指向它。 把它放在你的構造函數中:
this->actualStation = new StationAdvanced(...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.