编辑: 我做了一些摆弄我的程序,我发现我遇到的问题与这个类指针无关,事实上我的语法是正确的。我很感谢所有的回复,但我纠正了这个问题。 谢谢大家。
所以我搜索了这个网站和谷歌,似乎找不到任何东西。据我所知,我已经习惯了正确的语法,但也许我错过了一些小的东西。
基本上,我已经声明了一个类型为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();
答案 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
所指出的那样