C++,在类变量中添加条件
C++, Adding conditions in class vars
标题可能不对,因为我找不到合适的词。我想向某个对象(由类创建的实例)添加条件。
在 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...
}
}
假设条件为: 条件 = 值 1>值 2;我想在条件中"添加"一个条件,以便它变成这样的东西:
conditions = (value1 > value2) || (value3 <= value4);
或
conditions = (value 1 > value2) && (value3 <= value4);
如果我问错了什么,我很抱歉!如果你知道答案以外的其他东西,但做同样事情的完全不同的事情,不要犹豫,讨论它。
提前感谢!
我假设你知道为什么conditions
字段和condition
参数都是简单的布尔变量。如果这是真的,它可能非常简单,但您应该将addCondition
替换为 andCondition
和 orCondition
:
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
是一个简单的布尔值的要求。
以下是如果您想重新评估条件可以执行的一个例子。
一个类和-ing(或-ing)条件,由布尔变量表示,在使用useCondition
时计算
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 个变量之间的相等或不相等,以及可按 and
和 or
组合,您甚至可以更加通用。但是对于SO的初始答案来说,这太复杂了。但是您可以尝试实现这个想法,并在卡住时在此处提出更精确的问题......
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 如何在C++中从两个单独的for循环中添加两个数组
- 在没有太多条件句的情况下,我如何避免被零除
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何在三元条件运算符中添加换行符和连接? :在 C++ 中
- 如何有条件地将元素添加到 std::array - C++11
- 有条件地使用 Boost Python 添加模块
- 有条件地添加到过载集是否合法
- 我将如何在此处添加条件变量
- 使用 QML 添加具有条件的类
- 有条件地将文件添加到项目中C++库中
- C++,在类变量中添加条件语句
- 如何有条件地添加增强 MPL
- C++,在类变量中添加条件
- 是否可以添加一些条件' boost::signal '
- 如何有条件地将函数添加到类模板中
- 我如何在精神X3中添加条件期望点
- c++预处理器添加word if条件
- c++尝试添加Peterson算法以避免共享内存中的竞争条件