1

我有一个模板类的成员函数,声明如下:

template <class T>
int Data<T>::getPosition(vector<T> stuff, T newStuff, bool ascending)

我用这条线在某处称它为

frequencies.insert(frequencies.begin() + getPosition(frequencies, current, ascending),
                       frequencies[i]);

该行的变量声明为:

vector<T> temp;
vector<int> frequencies;
int current = frequency.find(words[i])->second;

但是,调用会getPosition给出此错误:

Data.h|158|error: no matching function for call to 'primitives::Data<double>::getPosition(std::vector<int, std::allocator<int> >&, int&, bool&)'|
Data.h|165|note: candidates are: int primitives::Data<T>::getPosition(std::vector<T, std::allocator<_CharT> >, T, bool) [with T = double]|

我在这里做错了什么?

4

3 回答 3

2

getPosition接受三个类型的参数vector<T>,Tbool. T在这种情况下,模板化类型是double(如错误消息中所示),但您试图分别传递vector<int>int作为第一个和第二个参数。

也许getPosition不应该对参数进行模板化?取决于您要实现的目标 - 毕竟,您确实在那里有硬编码的 int 向量。

于 2010-11-20T20:36:20.317 回答
1

您的函数原型在 上被模板化Data<t>,看起来您正在对具有类型的对象执行此调用Data<double>并传递 astd::vector<int>和 a int,而它可能期望 astd::vector<double>和 adouble对应于Data对象的初始模板化类型。

于 2010-11-20T20:36:06.293 回答
0
vector<T> temp;

这里的 T 不应该是 int、double 或 bool 之类的类型吗?

于 2010-11-20T20:29:34.583 回答