为什么我得到"没有匹配的功能来呼叫' getVector'"关于赋值行语句的错误?
template <typename T>
vector<T> getVector(int);
int main() {
auto myVector = getVector(5);
...
}
template <typename T>
vector<T> getVector(int size) {
...
}
答案 0 :(得分:3)
看看你的编译器说的是什么!它试图帮助你。
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
答案 1 :(得分:0)
您将getVector()
定义为采用模板参数T
的函数模板。需要以某种方式提供该模板参数。如果没有T
被推断或明确提供,您就无法调用该函数。
例如,如果您要返回的向量包含整数,则可以为int
提供T
,如下所示:
auto myVector = getVector<int>(5);