组成和抽象类
composition and abstract class
本文关键字:抽象类 更新时间:2023-10-16
让我假设我有一个超级类WorkStation
和两个子类StationNormal
,StationAdvanced
。我还有另一个Robot
类,它具有WorkStation
指针,该指针将以StationAdvanced
开头,但可以更改,但是我的类WorkStation
是抽象类。我认为Robot
类应该是这样的:
class Robot{
private:
WorkStation * actualStation;
...
}
我的问题是,如果我的类WorkStation
是抽象的,应该如何定义机器人类构造函数。
我认为以下内容应该足够:
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());
您需要让StationNormal
和StationAdvanced
继承WorkStation
一个例子是:
class StationNormal:public WorkStation
{
....
}
public Robot(WorkStation* workStation)
{
actualStation = workStation;
}
在主要方法中:
new Robot(new StationNormal()) ;
好吧,在您的构造函数中,您将实例化实际工作站,并告诉指针(WorkStation * actualStation
)指向它。将其放入您的构造函数:
this->actualStation = new StationAdvanced(...)
相关文章:
- 无法创建抽象类的实例
- 用pybind11包装C++抽象类时出错
- 如何处理从一个对象传递到另一个在C++中具有公共抽象类的对象的消息
- 有没有办法按值将纯抽象类的所有子类传递给 C++ 中的函数?
- 抽象类错误,请参阅声明" "是抽象的
- 将自定义函数传递到基抽象类中以延迟执行
- 将包含抽象类和普通类C++包导出到 Python
- C++:处理抽象类中的错误时出现问题
- C ++如何在原始抽象类中创建一个函数,该函数接受派生类的输入
- 在 C++ 中使用另一个头文件中的抽象类
- ATL::CComContainedObject<contained>: C2259 无法实例化抽象类
- C++:从抽象类重写纯虚拟运算符重载
- 如何创建shared_ptr抽象类的容器
- .h 或.cpp文件中的抽象类或两者兼而有之?
- 从抽象类继承以创建另一个抽象类时,我应该重新声明所有虚函数吗?
- E0322:不允许使用抽象类类型 " " 的对象
- 可视抽象类 c++(错误 LNK 2001:未解析的外部符号)
- 提升 - 类没有名为"序列化"的成员(抽象类)?
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- 对纯抽象类中方法的未定义引用