c++ - 如何帮助编译器推导模板参数?

标签 c++ templates

我有这个方法:

template <typename Type>
static QList<Type> comboListToItemsList(QList<QList<QVariant>>& comboList) {
    QList<Type> itemsList;
    if (comboList.length() > 0) {
        foreach (QList<QVariant> dbItem, comboList) {
            Type item(dbItem);
            itemsList.append(item);
        }
    }
    return itemsList;
}

当我调用它时:

QList<SettingItem> settingItems = 
(QList<SettingItem>) DatabaseManager::comboListToItemsList(result.first);

它是“无法推断模板参数类型”。与我已经通过添加

所做的相比,我如何才能更多地帮助编译器解决这个问题
(QList<SettingItem>)

?我有子类名称的枚举,该方法是为其创建的,但我真的不知道如何在这里使用它……

最佳答案

正如@chris 所说,只需将其指定为模板参数即可。

QList<SettingItem> settingItems = DatabaseManager::comboListToItemsList<SettingItem>(result.first);

关于c++ - 如何帮助编译器推导模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24984408/

相关文章:

C++:C++ 类的共同祖先和接口(interface)/原型(prototype)是否相互排斥?

c++ - fortran代码调用c代码时出错

c++ - Paint Job Estimator C++

c++ - 错误 C2059 : syntax error: '}' C++

c++ - 试图将基类转换为类模板

C++ 未定义对模板类方法的引用

c++ - std::enable_if 和 std::enable_if_t 有什么区别?

c++ - Arduino:无法将取消引用的指针值从库函数返回到草图

c++ - C++ 部分模板特化的问题

c++ - 滥用逗号运算符来柯里化(Currying)函数参数