2

问这个问题让我很痛苦,我知道答案,但我只是完全空白。

我的程序是一个显示损坏的简单程序。我所需要的只是能够使用函数攻击来称呼我的班级为敌人和老板。所以基本上enemy.Attack()或者能够像这样调用enemy.Attack(30)并且输出看起来不同。

这是需要发生的事情:

enemy.Attack()输出:10

enemy.Attack(30)输出:30

每次我尝试空括号版本时,我都会收到错误“函数不接受 0 个参数”

敌人.h

class Enemy
{
public:
    Enemy();
    void Attack();

private:
    int m_Damage;
};

敌人.cpp

#include <iostream>

#include "enemy.h"

Enemy::Enemy() : m_Damage(10)
{}

void Enemy::Attack(int damage)
{
m_Damage = damage;
std::cout << "Damage: " << m_Damage << std::endl;
}
4

1 回答 1

6

在类成员声明中提供默认参数:

class Enemy
{
public:
    Enemy();
    void Attack(int damage = 10);

private:
    int m_Damage;
};

您实现的其余部分可以保持原样(尽管我自己会默认构造m_Damage为零,甚至不使用它,因为我不确定您此时是否需要它)。

于 2013-08-31T21:37:29.407 回答