1
가상 클래스의 자식 인 C++ 객체가 있는데 파이썬으로 감싸려고합니다. 이 파일은 컴파일, 나는 파이썬로 가져올 수 있습니다,하지만 난 함수를 호출 할 때, 나는 오류 얻을 : 나는 힘든 시간이 오류를 인식하지 못했습니다부스트 파이썬은 가상 클래스를 래핑했습니다 .- 자식 반환 오류 : C++ 서명과 일치하지 않았습니다.
In [3]: x
Out[3]: <beh.MappedBehaviourDomain at 0x23e7158>
//So, obviously the constructor is working (or at least thinks it is)
In [4]: x.subject_count()
---------------------------------------------------------------------------
ArgumentError Traceback (most recent call last)
/home/max/verk/btr-email/build/x86_64/bin/ipython in <module>()
----> 1 x.subject_count()
ArgumentError: Python argument types in
BehaviourDomainWrap.subject_count(MappedBehaviourDomain)
did not match C++ signature:
subject_count(BehaviourDomainWrap {lvalue})
subject_count(BehaviourDomainWrap {lvalue})
을; 이것은 처음으로 부스트 파이썬으로 작업하고 C++에 대한 많은 경험이 없습니다. 관련 코드는 다음과 같습니다.
// Instantiating class for use in boost python
struct BehaviourDomainWrap : BehaviourDomain, wrapper<BehaviourDomain>
{
size_t subjectCount() const {
return this->get_override("subjectCount")();
// A bunch of other methods removed
}
BOOST_PYTHON_MODULE(beh) {
class_<BehaviourDomainWrap, boost::noncopyable>("BehaviourDomainWrap")
.def("subject_count", pure_virtual(& BehaviourDomainWrap::subjectCount))
;
class_<MappedBehaviourDomain, bases<BehaviourDomainWrap> >
("MappedBehaviourDomain", init<std::string>())
;
}
왜 잘못 되었습니까?