如何解决错误说"No matching function call for XXX"?

How to resolve error says "No matching function call for XXX"?

本文关键字:matching No function for XXX call 何解决 解决 错误      更新时间:2023-10-16

为什么在赋值行语句中出现"调用'getVector'时没有匹配函数"错误?

template <typename T>
vector<T> getVector(int);
int main() {
    auto myVector = getVector(5);
    ...
}
template <typename T>
vector<T> getVector(int size) {
    ...
}

看看编译器是怎么说的!它试图帮助你。

main.cpp:7:21:错误:调用"getVector"没有匹配的函数

然后:

main.cpp:4:16:注意:忽略了候选模板:无法推断模板参数'T' std::vector<T> getVector(int);

错误非常明显:编译器看到了getVector函数,但您从未提到用"具体"类型来代替T:编译器不知道您希望向量包含什么,所以它只是忽略了该函数模板。

你想在向量中存储什么样的值?例如整数?然后:

auto myVector = getVector<int>(5);
                          ^ give a type here

您将getVector()定义为接受模板参数T的函数模板。需要以某种方式提供该模板参数。如果没有推导或显式提供T,就无法调用函数。

例如,如果返回的向量包含整数,则可以为T提供int,如下所示:

auto myVector = getVector<int>(5);
相关文章: