很長一段時間的讀者,我想一個模板,返回不同的類
我在想,如果有人可以幫助我做我的代碼簡單一點使用模板返回從相同的基本派生不同的類。所以我可以調用類的函數而不是重寫管理器類中的每個對象調用的函數。這裏一個我目前的函數的例子電話:
void setLoopImage(AnimationManagerIndex & managerIndex, bool b)
{
switch (managerIndex.animationClass)
{
case ANIMATION_CLASS_BASE:
{
vAnimationObjectBase[managerIndex.index].setLoopImage(b);
break;
}
case ANIMATION_CLASS_MOVING:
{
vAnimationObjectMoving[managerIndex.index].setLoopImage(b);
break;
}
case ANIMATION_CLASS_MOVING_BEZIER:
{
vAnimationObjectMovingBezier[managerIndex.index].setLoopImage(b);
break;
}
}
}
我想創建一個返回像這樣這些類模板函數:
template<class T>
T & getAnimationObject(AnimationManagerIndex & managerIndex)
{
switch (managerIndex.animationClass)
{
case ANIMATION_CLASS_BASE:
{
return vAnimationObjectBase[managerIndex.index];
}
case ANIMATION_CLASS_MOVING:
{
return vAnimationObjectMoving[managerIndex.index];
}
case ANIMATION_CLASS_MOVING_BEZIER:
{
return vAnimationObjectMovingBezier[managerIndex.index];
}
}
}
所以第一個函數將變爲:
void setLoopImage(AnimationManagerIndex & managerIndex, bool b)
{
getAnimationObject(managerIndex).setLoopImage(b);
}
你說這三個是從相同的基本衍生?然後你不需要模板。只需使用'Base&'作爲返回類型即可。 – HolyBlackCat
你的嘗試有什麼問題?你有什麼實際的*問題?作爲一個長期的讀者,你應該有時間[閱讀如何提出好問題](http://stackoverflow.com/help/how-to-ask),如果你還沒有這樣做,那麼請這樣做。 –