我编写了一个具有模板化成员函数的类,主要是因为它需要std::vector
作为参数,但是我很难找到一种正确的方法来调用它。
class foo(){
// ...
template <typename _t> int bar(const std::vector<_t> *values);
// ...
}
稍后用以下方法调用此函数时:
// ...
foo c;
std::vector<int> v(5,100);
c.bar(&v);
// ...
我收到错误:
error: no matching function for call to ‘foo::bar(std::vector<int>*)’
c.bar(&v);
foo::bar(std::vector<int>*)
是否应该符合模板参数?为什么不编译?
答案 0 :(得分:1)
工作示例:
#include <vector>
class foo{
public:
template <typename _t> int bar(const std::vector<_t> *values) {
return 1;
}
};
int main() {
foo c;
std::vector<int> v(5,100);
c.bar(&v);
}
如果你真的需要它不要内联你可以:
//from here
#include <vector>
class foo{
public:
template <typename _t> int bar(const std::vector<_t> *values);
};
template <typename _t> int foo::bar(const std::vector<_t> *values) {
return 0;
}
//to here - should be in header file to allow compiler to link it!
int main() {
foo c;
std::vector<int> v(5,100);
c.bar(&v);
}