假设我确实有一个接口(interface)IControllable
,3个类继承了该接口(interface):MachineControllable, LightControllable, OtherControllable
,它具有一些特定的数据和方法。
现在,我确实只希望所有IControllable
的一个容器,所以我确实创建了一个 vector 容器。
vector<IControllable> allControllables; // and put all the MachineControllable,
//LightControllable, OtherControllable here by the IControllable interface class.
但是现在的问题是,我只能使用
IControllable
定义的内容,而不能使用特定Controllable的特定数据和方法。对于每个可控对象,我应该使用单独的容器,还是我的逻辑在OOP方面是错误的?
最佳答案
不,您的逻辑还可以。问题是,您不能实例化一个抽象类。
您应该有一个保存指向IControllable
接口(interface)的指针的容器,例如:
vector<IControllable*> allControllables;
要么
vector<std::unique_ptr<IControllable>> allControllables;
要么
vector<std::shared_ptr<IControllable>> allControllables;