шаблон класса, оценивающий функцию - PullRequest
0 голосов
/ 24 января 2012

У меня есть следующий код:

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

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

dCoord - это класс, но я получаю следующую ошибку:

ошибка C2064: термин не оценивает функцию, принимающую 0 аргументов

Я получаю ту же ошибку, даже когда не возвращаю значение. Почему я получаю эту ошибку и как ее исправить?

приписка
front() возвращает элемент типа myPair.

Ответы [ 4 ]

2 голосов
/ 24 января 2012

first является членом, а не функцией:

return _path.front().first;
2 голосов
/ 24 января 2012

Наиболее вероятный ответ: first является first членом std::pair.Это открытый элемент данных типа dCoord, а не функция, поэтому его нельзя вызывать как функцию.

Попробуйте:

return _path.front().first;
2 голосов
/ 24 января 2012

Поскольку first для std::pair является переменной-членом, которая в вашем случае является dCoord, которая, как говорит ошибка, не оценивает функцию, принимающую 0 аргументов.

tl; dr: std::pair::first - это переменная, а не функция.

1 голос
/ 24 января 2012

first и second являются членами данных std::pair, а не функциями-членами. Попробуйте это:

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