无法推断'T'的模板参数

use*_*879 1 c++ templates visual-c++

我的代码是:

std::vector<double> Vec;

template<typename T>
void GetObj(VARIANT &vtProp) 
{
    CComSafeArray<T> SafeArray;

    SafeArray.Attach(vtProp.parray);
    ULONG Count = SafeArray.GetCount();
    Vec.resize(Count);
    for(ULONG Index = 0; Index < Count; Index++)
    {
        Vec[Index] = SafeArray[Index];
    }
}
Run Code Online (Sandbox Code Playgroud)

编译时我收到以下错误:

error C2783: 'void __cdecl GetObj(struct tagVARIANT &)' : could not deduce template argument for 'T'
Run Code Online (Sandbox Code Playgroud)

请建议我正确的答案

jua*_*nza 7

函数模板的签名中没有任何内容允许编译器推导出模板类型,因此您需要明确:

GetObj<TheActualType>(arg);
Run Code Online (Sandbox Code Playgroud)