Tôi đang sử dụng SWIG 2.0 để tạo trình bao bọc Python cho thư viện C++. Một phương thức có đối số thuộc loại "const std :: map &". SWIG vui vẻ tạo ra một wrapper cho nó, nhưng tôi không thể tìm ra cách để gọi phương thức. Nếu tôi vượt qua, ví dụ, {"a": "b"} cho đối số đó, tôi nhận được một lỗi "NotImplementedError: Sai số hoặc loại đối số cho hàm quá tải".SWIG quấn một bản đồ <string, string> bằng Python như thế nào?
Tôi đã xem tệp .cxx được tạo với hy vọng nó sẽ làm rõ, nhưng không. Đây là mã xử lý đối số đó:
res4 = SWIG_ConvertPtr(obj3, &argp4, SWIGTYPE_p_std__mapT_std__string_std__string_t, 0 | 0);
if (!SWIG_IsOK(res4)) {
SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Context" "', argument " "4"" of type '" "std::map< std::string,std::string > const &""'");
}
Rõ ràng là đối số tồn tại và nó được coi là thứ được chuyển đổi thành bản đồ. Nhưng tôi không thể hiểu được nó thực sự muốn tôi vượt qua nó.
Trong tập uống một lân của bạn với bạn một cách rõ ràng quấn bản đồ? Tôi nghĩ rằng bạn cần phải tạo một biến của các loại dân cư bằng cách gọi chèn từ bên trong mã python. – mark