将 boost::asio::ip::地址运算符 == 导出到 python
Exporting boost::asio::ip::address operator == to python
我正在尝试使用boost python将boost::asio::ip::address导出到python。大多数类导出对于我的需求来说都是微不足道的,因为这些是简单的成员函数。
但是,当我导出比较运算符时,我看到它们是这样定义的:
friend bool operator==(const address& a1, const address& a2)
此语法 AFAIK 将运算符声明为非成员函数,而是命名空间函数。(使其无法导出到Python)
有没有办法调整 boost-python 以将其导出到 cmp 运算符,以允许 python 为我比较这些对象?或者我唯一的选择是用C++为这个类编写一些包装器并在那里实现适当的成员比较函数?
实际上,boost::p ython使它变得非常简单。如果任何函数将以对类的引用作为其第一个参数,则实际上可以将该函数导出为类成员。下面是一个简单的示例:
#include <boost/python.hpp>
using boost::python;
struct Test
{
int i;
};
bool operator==(const Test& t1, const Test& t2)
{
return t1.i == t2.i;
}
BOOST_PYTHON_MODULE(test)
{
class_<Test>("Test")
.def_readwrite("i", &Test::i)
.def(self == self);
}
瞧!这就是您所需要的。
相关文章:
- 将数组的地址分配给变量并删除
- 空基优化子对象的地址
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 如何在c++中使用引用实现类似python的行为
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 递归列出所有目录中的C++与Python与Ruby的性能
- IPC使用多个管道和分支进程来运行Python程序
- 将Wiimote MAC地址转换为PIN码,从C++转换为Python或Javascript
- 如何通过c++发送的地址在python中获取值
- 字节或整数地址预期,而不是str实例python 3
- 在python ctypes中截断了指向C++自定义类实例的指针地址
- 将地址转换为Python GDB中的特定类型
- 如何传递 python 列表地址
- C/Python绑定:指针地址修改
- 错误的重新定位地址0x0在 python.data C 扩展中
- 将 boost::asio::ip::地址运算符 == 导出到 python
- 如何通过python从GDB中的内存地址中获取对象
- Outlook -从显示名称获取电子邮件地址.可以在Python中工作,而不是C