Error C3867 in C++

32,400

Solution 1

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

Use getxPos() and getyPos().

Solution 2

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.

Solution 3

shotVector[eS-1].initShot(P->getxPos(), P->getyPos());
Share:
32,400
Admin
Author by

Admin

Updated on February 01, 2020

Comments

  • Admin
    Admin over 4 years

    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.