0
是否可以为不同类型的对象创建一个队列,但具有相同的接口?创建一个多类Queue C++
作为实例,我有称为SensorItem的接口,并且4种类,SensorItemA ,SensorItemB, SensorItemC 的,SensorItemD '
queue <SensorItem> cola;
void encolar(SensorItem* dato)
{
cola.push (*dato);
}
SensorItem* sacar()
{
SensorItem* d=cola.front();
cola.pop();
return d;
}
那我的类队列(可乐) 和在这里,我尝试使用它
void main()
{
Cola c=new Cola();
TemperatureItem t=new TemperatureItem(3.25);
c.encolar(t);
ImuItem i=new ImuItem(3,4,8);
}
它在我的语法错了吗?或者只是不可能做到这一点?
你应该能够通过多态性(继承)实现这一点,方法是制作一个父类(传感器项目)的队列并用该父类的子项填充它。如果您不熟悉,请阅读多态性:http://www.cplusplus.com/doc/tutorial/polymorphism/ –
这正是我所做的,但是当我尝试推送项目时出现此错误 无效参数' 候选人是: void encolar(std :: SensorItem *),这是我的推:TemperatureItem t = new TemperatureItem(3.25); c.encolar(* t); TemperatureItem继承自SensorItem :( –
无关:'main'应该返回一个'int',而不是'void'。如果你没有返回任何东西而退出'main'的末尾,编译器会为你插入一个'return 0' 。 –