缺少c++ api的修改方法
missing modification methods on C++ APIs
我想对z3::expr对象进行一些转换。我如何使用Z3_substitute_vars
, Z3_translate
和Z3_substitute_
与c++ API?它们是用c#实现的,但我在c++中找不到它们。很奇怪,它们没有被实现。
我尝试使用C api,但没有任何结果,这里有一个例子:
void substitute(){
z3::context c;
z3::expr a = c.int_const("a");
Z3_ast astA = a;
z3::expr plus = 2*a;
errs() << Z3_ast_to_string(c,plus);
z3::expr b = c.int_const("b");
Z3_ast astB = a;
z3::expr subs(c,Z3_substitute(c,plus,1,&astA,&astB));
errs() << Z3_ast_to_string(c,subs);
}
但a
没有被取代。我做错了什么吗?
感谢您指出这些功能缺失。c++包装器在C API和它之外增加了便利为这些API函数增加便利性是否合理既然你表明你正在使用它们,
c++包装器仍然可以与基本的C API一起使用。因此,您可以调用函数,例如Z3_translate和Z3_substitute在使用c++ API时。许多其他API函数也不是存在于c++包装器中,而是现有函数的包装方式应该能很好地说明如何调用剩下的函数。
以下是一些相关的文章:
- z3 c++ API &尽管
- 在Z3中调用一些策略后如何使用枚举常量?
- 如何读取smtlib2字符串使用z3c++ api?
- 封装来自z3c API的实体
我相信你的例子有一个打字错误:
Z3_ast astB = a;
试
Z3_ast astB = b;
相关文章:
- 有没有一种优雅的方法可以使用向量修改器并获得新的向量,而不是更改原始向量
- const 方法使用引用修改对象
- 在不编写显式 setter 的情况下修改私有类数据成员的便捷方法是什么?模板有用吗?
- c++ 是否提供了一种使整个结构常量(不可修改)的方法?
- 如何修改类及其方法,让我调用另一个类的必要方法?
- 我可以制作一个对象方法,如果单独调用,它将自行修改,但如果在复制初始化期间调用,则会返回一个新对象?
- 如何仅通过类方法修改类公共数据成员
- 如何在 c++ 中修改运行时的方法?
- DPDK:修改捕获的数据包标头的最有效方法
- 如何转换一个类方法以修改另一个类的私有元素?
- 调用方法,该方法修改字段,而使用该字段的另一个方法正在执行
- 避免使用大量全局变量或使其易于访问和修改的最佳方法
- 在不使用public方法的情况下修改类private外部类
- 修改Boost多索引项的非索引字段的最佳方法:modify vs mutable
- 使用C 修改Java方法/字节码
- 为什么方法应该返回新实例,而不是修改实例本身
- const静态方法修改值
- 修改类方法中的私有类变量
- 修改映射中包含的类的正确方法是什么
- 缺少c++ api的修改方法