我有一个名为Warrior的类,它有uint m_health和uint m_maxHealth属性。我想让我的构造函数接受参数Warrior(uint health, uint maxHealth)。
现在我已经学习了C++很多,我知道所有的语法等,但是很难找到关于如何使用这些东西的教程,所以我真的不知道当health显然不能高于maxHealth时,我应该如何定义health和maxHealth :/
下面是我想到的几种方法:
// method 1
Warrior::Warrior(uint health, uint maxHealth) :
    m_health((health > maxHealth) ? maxHealth : health),
    m_maxHealth(maxHealth)
{}
// method 2
Warrior::Warrior(uint health, uint maxHealth) :
    m_maxHealth(maxHealth)
{
    if (health > maxHealth) {
        m_health = maxHealth;
    }
    else {
        m_health = health;
    }
}我相信还有其他的方法。抱歉,如果这只是一个意见问题,但如果在C++中有一种“首选”方式,它会是什么呢?
发布于 2013-05-14 21:37:46
template <typename T>
class RangeBoundValue
{
public:
    RangeBoundValue(const T _min, const T _max) : _min(_min), _max(_max) {}
    void setValue(T val)
    {
        if (val < _min) _value = _min;
        else if (val > _max) _value = _max;
        else _value = val;
    }
    T value() const {return _value;}
private:
    const T _min;
    const T _max;
    T       _value;
};在Warrior中使用此帮助器类
class Warrior
{
...
private:
    RangeBoundValue<uint> _health;
};https://stackoverflow.com/questions/16544648
复制相似问题