C ++,在类变量中添加条件

时间:2015-01-06 18:48:25

标签: c++ class object conditional-statements

标题可能不对,因为我找不到合适的单词。 我想为某个对象添加条件(由类创建的实例)。

在obj.h中:(不包括预处理器命令)

    class obj {
    public:
            void addCondition( bool cond );
            void useCondition();
    private:
            bool conditions;
    };

在obj.cpp中:(不包括预处理器命令)

    void obj::addCondition( bool cond )
    {
            //What to write here, is the question in short!!!
    }

    void obj::useCondition()
    {
            if(conditions)
            {
              //Do something...
            }
    }

假设条件是:         conditions = value1>值2; 我想在条件中“添加”一个条件,它就变成了这样的东西:

    conditions = (value1 > value2) || (value3 <= value4);

OR

    conditions = (value 1 > value2) && (value3 <= value4);

如果我在问事情上说错了,我很抱歉!如果你知道的不是答案,而是完全不同的事情做同样的事情,不要犹豫,讨论它。

提前致谢!

1 个答案:

答案 0 :(得分:2)

我假设您知道为什么conditions字段和condition参数都是简单的布尔变量。如果这是真的,那可能非常简单,但您应该将addCondition替换为andConditionorCondition

void obj::andCondition( bool cond )
{
        conditions = conditions && condition;
}
void obj::orCondition( bool cond )
{
        conditions = conditions || condition;
}

您应该定义条件是初始为真还是假。您始终可以将其设置为已定义的值,因为上面的代码为:

obj.andCondition(false);

conditions设为false,

obj.orCondition(true);

conditions设为true


根据评论编辑:

上述答案基于conditions是一个简单的布尔变量的要求,而condition是一个简单的布尔值。

以下是您想要重新评估条件时可以采取的措施的一个示例。

在使用useCondition时评估的布尔变量表示的类和 - (resp。或者)条件:

class andcond {
    std::list<bool *> conditions;

public:
    void addCondition(bool &condition) {
        conditions.push_back(&condition);
    }
    bool isCondition();
};

bool andcond::isCondition() {
    bool retval = true;
    for (std::list<bool *>::iterator it = conditions.begin(); it != conditions.end(); it++) {
        retval = retval && **it;
    }
    return retval;
}

int main() {
    bool a=false, b=true;
    andcond c;
    c.addCondition(a);
    c.addCondition(b);
    std::cout << c.isCondition() << std::endl;  // is false here

    a = true;
    std::cout << c.isCondition() << std::endl; // is true here

    return 0;
}

注意:conditions是一个可以重新评估的布尔变量指针列表

通过定义实现bool eval()方法的条件类的完整层次结构,您甚至可以更加通用,例如2个变量之间的相等或不等式,以及andor之间的组合。但是对于对SO的初步答案的违规行为来说,这太复杂了。但你可以尝试实现这个想法,并在卡住时提出更准确的问题...

相关问题