今天遇到一个很诡异的问题,报错如下:
C:\DiskD\Projects.plus\Kolo\PatientManagement\Common\odb/database.txx(38): error C2664: 'void odb::access::object_traits_impl<ExaminationK,odb::id_sqlite>::persist(odb::database &,odb::access::object_traits<ExaminationK>::object_type &)': cannot convert argument 2 from 'T' to 'odb::access::object_traits<ExaminationK>::object_type &'
2> with
2> [
2> T=Examination
2> ]
C2664: 为类型转换问题
翻了几遍 example,没有发现问题所在
Examination 类使用了#pragma db id 的ODB pragma language
注意:此处的id_ 值是有ODB组件管理自动生成的,所以Examination对象会被改变
故,不能将persist的参数设定为const类型,const 导致类型转换失败。