我有一個函數,目前需要兩個模板參數。預計一個是智能指針,另一個預計是對象類型。例如,SmartPtr<MyObject>
作爲第一個模板參數,而MyObject
作爲第二個模板參數。從智能指針確定類型
template <typename T, typename TObject>
我想知道我是否可以從第一個參數SmartPtr<MyObject>
或無法自動確定第二個參數,MyObject
,讓我的模板函數是這樣寫的:
template <typename T>
而且類型TObject
中的原始模板函數是從T
自動確定的,這是預期的智能指針。
按照要求,這裏是函數聲明及其使用:
template <typename T, typename TObject>
T* CreateOrModifyDoc(T* doc, MyHashTable& table)
{
T* ptr = NULL;
if (!table.FindElement(doc->id, ptr))
{
table.AddElement(doc->id, new TObject());
table.FindElement(doc->id, ptr);
}
return ptr;
}
發佈一些代碼。 – 2011-05-10 20:48:38
你可以將這個函數粘貼到你的問題中嗎? – mkb 2011-05-10 20:50:53
我們可以猜測,但爲了完全回答您的問題,您需要向我們展示函數聲明以及如何調用它。 – GManNickG 2011-05-10 20:51:44