[英]Use of overloaded function inside template with template param
可以用一種不錯的方法嗎?
template <class T> Init(T &object, Type type)
{
Collider collider;
switch (type)
{
case TypeA:
collider.InitAsA(object);
break;
case TypeB:
collider.InitAsB(object);
}
}
打電話給
A a;
Init(a, TypeA);
B b;
Init(b, TypeB);
A和B沒有共同祖先。
void Collider::InitAsA(A &a);
void Collider::InitAsB(B &b);
編輯:
Collider :: InitAs ..無法更改為模板,也無法更改,因為我不能更改其他代碼。
類型可以是int,實際上是一個枚舉。
通過您的Init()
函數,您可以僅使用函數重載:
void Init(A &object)
{
Collider collider;
collider.InitAsA(object);
}
void Init(B &object)
{
Collider collider;
collider.InitAsB(object);
}
但是,您可以重載Init()
方法:
void Collider::Init(A &a);
void Collider::Init(B &b);
然后,如果您仍然想要模板函數,它可能看起來像這樣:
template <typename T>
void Init (T &object)
{
Collider collider;
collider.Init(object);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.