Ошибка C3867 в C ++ - PullRequest
       48

Ошибка C3867 в C ++

3 голосов
/ 20 октября 2010

Мой код работал нормально, пока я не перезагрузил программу несколько часов спустя. Теперь я получаю эти ошибки:

ошибка C3867: 'player :: getxPos': вызов функции отсутствует в списке аргументов; используйте '& player :: getxPos', чтобы создать указатель на член

ошибка C3867: 'player :: getyPos': вызов функции отсутствует в списке аргументов; используйте '& player :: getyPos', чтобы создать указатель на член

Это код вопроса:

if (P->shoot())
{
    shotVector.push_back(shot());
    eS = shotVector.size();
    shotVector[eS-1].initShot(
        P->getxPos, // C3867
        P->getyPos // C3867
    );
}

Я пытаюсь вызвать две функции из класса, называемого player, и эти две функции выглядят так:

int player::getxPos(){
    return xPos;
};

int player::getyPos(){
    return yPos;
};

Что делается, так это то, что я пытаюсь узнать позицию игроков, а затем использую ее, чтобы решить, откуда стрелять.

Ответы [ 3 ]

21 голосов
/ 20 октября 2010

shotVector[eS-1].initShot(P->getxPos, P->getyPos); - вы пытаетесь вызвать getxPos() и getyPos() участников без ().

Использовать getxPos() и getyPos().

7 голосов
/ 20 октября 2010

Вы забыли скобки, которые сообщают компилятору, что вы хотите вызвать метод:

P->getxPos

против

P->getxPos()

Если вы вместо этого использовали &P->getxPos, это даст вамуказатель на саму функцию-член.

1 голос
/ 20 октября 2010
shotVector[eS-1].initShot(P->getxPos(), P->getyPos());
...