C ++:无法从指针调用成员

时间:2014-01-17 20:34:23

标签: c++ class pointers crash member

编辑: 我做了一些摆弄我的程序,我发现我遇到的问题与这个类指针无关,事实上我的语法是正确的。我很感谢所有的回复,但我纠正了这个问题。 谢谢大家。

所以我搜索了这个网站和谷歌,似乎找不到任何东西。据我所知,我已经习惯了正确的语法,但也许我错过了一些小的东西。

基本上,我已经声明了一个类型为Player的类对象,然后创建了一个类型为Player *的指针,并为其分配了类对象。现在,当我尝试从指针调用成员函数时,我的程序崩溃了。我不知道问题是什么。有什么想法吗?

这是类定义:

class Player
{
    public:
        Player(int x, int y);
        //~Player();

        //int hitPoints;
        void printHP() {cout << hitPoints << endl;}
        int xCord;
        int yCord;
    protected:
    private:
        int hitPoints;
};

//constructor
Player::Player(int x, int y)
{
    hitPoints = 100;
    xCord = x;
    yCord = y;
}

这是我声明指针并尝试调用成员函数的地方。

Player hero(5, 5);
Player * playerPtr;
playerPtr = &hero;
playerPtr->printHP();

该程序编译良好,但它立即崩溃。但是,当我直接从类对象中调用成员函数时,它就可以工作:

hero.printHP();

3 个答案:

答案 0 :(得分:3)

您的程序看起来是正确的。是否从同一个上下文调用了playerPtr?即,你没有将它传递给另一个函数?

答案 1 :(得分:0)

试试这个:

Player * playerPtr = new Player(5, 5);    
playerPtr->printHP();

或:

static Player hero(5, 5);
Player * playerPtr;
playerPtr = &hero;
playerPtr->printHP();

答案 2 :(得分:0)

在下面的编译器上执行你的程序。

http://www.compileonline.com/compile_cpp11_online.php

工作得很好。可能存在Scope问题,如user3208064

所指出的那样