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' 。 –