Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error C3867 in C++

My code was working fine until I reloaded the program a few hours later. Now I get these this error:

error C3867: 'player::getxPos': function call missing argument list; use '&player::getxPos' to create a pointer to member

error C3867: 'player::getyPos': function call missing argument list; use '&player::getyPos' to create a pointer to member

This is the code in question:

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

I'm trying to call two functions from a class called player and these two functions look like this:

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

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

What's being done is that I'm trying to ask for the players position and then use that to decide where to shoot from.

like image 755
Xturbed1442 Avatar asked Nov 28 '22 06:11

Xturbed1442


2 Answers

shotVector[eS-1].initShot(P->getxPos, P->getyPos); - you are trying to call the getxPos() and getyPos() members without ().

Use getxPos() and getyPos().

like image 120
逆さま Avatar answered Dec 05 '22 09:12

逆さま


You forgot the parenthesis, which tell the compiler that you want a method call:

P->getxPos

vs

P->getxPos()

If you instead used &P->getxPos, that would give you a pointer to the member function itself.

like image 38
Adam Batkin Avatar answered Dec 05 '22 11:12

Adam Batkin