首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导出boost::asio::ip::address运算符==到python

导出boost::asio::ip::address运算符==到python
EN

Stack Overflow用户
提问于 2016-01-25 14:03:51
回答 1查看 72关注 0票数 0

我试图使用boost python将boost::asio::ip::address导出到python。大多数类导出对于我的需求来说都是微不足道的,因为这些都是简单的成员函数。

但是,当我导出比较运算符时,我看到它们的定义如下:

代码语言:javascript
复制
friend bool operator==(const address& a1, const address& a2)

这个语法AFAIK将运算符声明为非成员函数,而是一个命名空间函数。(使之不可导出给python)

我是否可以调整boost-python将其导出到cmp操作符以允许python为我比较这些对象?或者我唯一的选择是在C++中为这个类编写一些包装器,并在那里实现适当的成员比较函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-27 03:13:46

实际上,boost::python使它变得非常容易。如果将对类的引用作为类的第一个参数,那么实际上可以将任何函数导出为类成员。下面是一个简单的例子:

代码语言:javascript
复制
#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);
}

瞧!这就是你所需要的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34994521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档