【发布时间】:2019-03-06 03:54:36
【问题描述】:
我正在尝试制作一个小型迷你游戏,其中 class Hero 使用 class Enemyvariables 与 friend 交互,但代码无法编译并给我前向声明错误
#include <iostream>
class Enemy;
class Hero
{
friend class Enemy;
private:
static int hp, power;
public:
Hero *h1;
Hero ()
{
hp = 50;
power = 10;
}
static void attackEnemy (Enemy *e1, Hero *h1);
};
static void Hero::attackEnemy(Enemy *e1, Hero *h1)
{
e1->hp -= h1->power;
}
class Enemy
{
friend class Hero;
private:
static int hp, power;
public:
Enemy ()
{
hp = 15;
power = 10;
}
void attackHero ();
};
int main ()
{
Enemy *e1 = new Enemy ();
Hero *h1 = new Hero ();
h1->attackEnemy(Enemy *e1, Hero *h1);
return 0;
}
我被告知 static 函数和变量能够防止此错误,因为它们是 global,因为它预编译了构建
【问题讨论】:
标签: c++ class oop static friend