0

假设我有一个超类WorkStation和两个子StationNormalStationAdvanced。我有另一个类Robot,它有一个WorkStation以 a 开头的指针,StationAdvanced但它可以改变,但我的类WorkStation是一个抽象类。我认为类Robot应该是这样的:

class Robot{
 private: 
       WorkStation * actualStation;
...
}

WorkStation我的问题是如果我的类是抽象的,应该如何定义 Robot 类的构造函数。

4

3 回答 3

1

你需要让StationNormalStationAdvanced继承WorkStation 一个例子是:

class StationNormal:public WorkStation
{
  ....
}

public Robot(WorkStation* workStation)
{
  actualStation = workStation;
}

在 main 方法中,例如:

new Robot(new StationNormal()) ;

于 2012-10-24T17:14:58.680 回答
1

我认为以下内容应该足够了:

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());
于 2012-10-24T17:21:23.400 回答
0

好吧,在您的构造函数中,您将实例化实际的 WorkStation 并告诉指针 ( WorkStation * actualStation) 指向它。把它放在你的构造函数中:

this->actualStation = new StationAdvanced(...)
于 2012-10-24T17:14:11.947 回答