У меня есть функция, которая в настоящее время принимает два параметра шаблона. Предполагается, что одним из них будет интеллектуальный указатель, а другим - тип объекта. Например, SmartPtr<MyObject>
в качестве первого параметра шаблона и MyObject
в качестве второго параметра шаблона.
template <typename T, typename TObject>
Я хотел бы знать, могу ли я определить второй параметр, MyObject
, автоматически из первого параметра SmartPtr<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;
}