Tôi muốn hiển thị mã C++ bằng một số:tại sao tôi cần các toán tử so sánh trong bộ lập chỉ mục vector python tăng?
std::vector<A>
tới python. My
class A{};
không có toán tử so sánh được triển khai. Khi tôi thử
BOOST_PYTHON_MODULE(libmyvec)
{
using namespace boost::python;
class_<A>("A");
class_<std::vector<A> >("Avec")
.def(boost::python::vector_indexing_suite<std::vector<A> >());
}
Tôi gặp lỗi về toán tử so sánh. Nếu tôi thay đổi định nghĩa của A thành
class A {
public:
bool operator==(const A& other) {return false;}
bool operator!=(const A& other) {return true;}
};
Nó hoạt động như một sự quyến rũ.
Tại sao tôi cần triển khai các toán tử so sánh này? Có cách nào để sử dụng vector_indexing_suite
mà không có chúng?
Cảm ơn câu trả lời của bạn! Mã này chỉ có sẵn trong hộp cát tăng không? Cách dễ nhất để sử dụng nó là gì? Tôi có cần tải xuống và biên dịch boost bằng tay sau khi trao đổi các tập tin trong [sandbox] (https://svn.boost.org/svn/boost/sandbox/python_indexing_v2/) không? – Hans
Rõ ràng, tính năng này không được bao gồm trong phiên bản phát hành của Boost.Python, vì vậy nếu bạn muốn sử dụng nó, bạn sẽ phải tải xuống phiên bản mới nhất từ sandbox và xây dựng lại nó. Tuy nhiên, tôi không biết tình trạng của phiên bản này là gì (nó chưa được xem xét), vì vậy, đặt cược tốt nhất của bạn có lẽ là gắn bó với việc thực hiện giả của các toán tử so sánh. –