如何检查是否已分配z3 :: expr

时间:2014-04-25 06:11:08

标签: c++ z3

我通过c ++接口使用z3。 z3 :: expr可以是基本变量/常量(c.real_const,c.real_val)或表达式。我经常遇到因使用z3 :: expr而导致的错误。 可以通过以下代码描述该问题:

z3::context c; 
z3::expr exp(c);
for(...){
   exp=...;
}
 cout<<exp;

如果根本没有执行循环,我将收到错误。我知道原因是exp没有分配。如何检查是否分配了z3 :: expr变量?

1 个答案:

答案 0 :(得分:1)

expr类派生自ast,它有一个可用于此目的的bool()运算符。这意味着我们可以简单地写

if (exp)
  cout << exp;

(内部表达式和AST只是指针,只要指针非零,它们就应该有效,所以bool()运算符只检查非零指针:return m_ast != 0;)。