类模板评估函数

时间:2012-01-24 16:16:35

标签: c++ templates typedef

我有以下代码:

typedef Coord2d<double> dCoord;
typedef std::pair<dCoord, Color<double> > cdpair;
CircularBuffer<cdpair>  _path;

dCoord head()
{
  return _path.front().first(); // error here
}

dCoord是一个类,但我收到以下错误:

  

错误C2064:term不计算为采用0参数的函数

即使我没有返回值,我也会得到同样的错误。为什么我会收到此错误,如何解决?

P.S。
front()会返回myPair类型的项目。

4 个答案:

答案 0 :(得分:2)

因为first上的std::pair是一个成员变量,在你的情况下是一个dCoord,正如错误所说的那样,它不会计算为一个带有0个参数的函数。

tl; dr:std::pair::first是一个变量,而不是一个函数。

答案 1 :(得分:2)

first是一个成员,而不是一个函数:

return _path.front().first;

答案 2 :(得分:2)

最可能的答案是firstfirst的{​​{1}}成员。它是std::pair类型的公共数据成员,而不是函数,因此不能将其作为函数调用。

尝试:

dCoord

答案 3 :(得分:1)

firstsecondstd::pair的数据成员,而不是成员函数。试试这个:

dCoord head()
{
    return _path.front().first;
}