Java không có tương đương operator()
hoặc operator=
với cùng nghĩa như C++, vì vậy không có cách nào để SWIG trực tiếp quấn nó. Bởi vì chúng có thể quan trọng, bạn sẽ thấy một cảnh báo giải thích rằng chúng không bị bọc. (Thiếu operator=
có thể đặc biệt xấu đôi khi).
Mã này thể hiện một cảnh báo như vậy khi chạy swig -Wall -c++ -java
:
%module Sample
struct test {
bool operator()();
};
Nhưng bạn có thể tắt các cảnh báo và nói với SWIG để lộ các nhà điều hành trực tiếp như một hàm thành viên thường xuyên bằng cách nói một cái gì đó như:
%module Sample
%rename(something_else) operator();
struct test {
bool operator()();
};
Kết quả nào trong hàm có tên something_else
được thêm vào thay cho operator()
trong trình bao bọc được tạo.
Hoặc bạn có thể khẳng định để SWIG mà phớt lờ những chỉ là tốt sử dụng:
%ignore operator()
(Bạn cũng có thể áp dụng một trong những chỉ thị ít rộng rãi bằng cách tuyển các nhà khai thác với tên lớp).
Đó không phải là cảnh báo G + +, đó là cảnh báo SWIG. – Flexo
Tôi sẽ nói rằng trông giống như SWIG. Nó không phải là một vấn đề, trừ khi bạn muốn sử dụng các toán tử đó từ Java. –
Cảm ơn thông tin, tôi đã chỉnh sửa câu hỏi của mình. – arsalank2