我使用痛饮,并在头文件evidence.h
,我有以下几点:如何从类声明中正确导出SWIG typedef?
namespace dai {
class Evidence {
public:
typedef std::map<Var, size_t> Observation;
};
}
而且在痛饮接口文件dai.i
,我有以下几点:
//The types are defined in both swig and the output cxx file...
%include "../include/dai/evidence.h"
%include "../include/dai/var.h"
#include "../include/dai/evidence.h"
//namespace std {
%{
typedef std::map<Var, size_t> Observation;
%}
// %template(Observation) map<Var, size_t>;
//}
typedef std::map<Var, size_t> Observation;
%template(VecObservation) std::vector<dai::Evidence::Observation>;
我相信, Var使得它正确地生成cxx文件和ml文件,所以我不会进入该部分。正是我遇到的问题,即向我声明的VecObservation模板添加项目。在test.ml文件,我有以下几点:
let observation = new_Observation C_void in
let observations = new_VecObservation C_void in
let _ = (invoke observations) "push_back" observation in()
而且我得到对应于push_back
行错误:(“没有找到适当的转换”失败)