使用Boost::Python用参数包装纯虚拟方法

2024-06-16 16:18:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试使用Boost::Python向Python公开一个c++接口(纯虚拟类)。c++接口是:

在代理人.hpp在

#include "Tab.hpp"
class Agent
{
    virtual void start(const Tab& t) = 0;
    virtual void stop() = 0;
};

通过阅读“官方”教程,我成功地编写并构建了下一个Python包装器:

在代理.cpp在

^{pr2}$

请注意,我在构建它时没有问题。但是,让我担心的是,正如您所看到的,AgentWrapper::start似乎没有将任何参数传递给Agent::start in:

void start(const Tab& t)
{
    this->get_override("start")();
}

python包装器如何知道“start”接收到一个参数?我该怎么做?在


Tags: 代理官方includevirtual教程tabstartclass
1条回答
网友
1楼 · 发布于 2024-06-16 16:18:41

get_override函数返回一个类型为override的对象,该对象对于不同数量的参数有许多重载。所以你应该可以这样做:

void start(const Tab& t)
{
    this->get_override("start")(t);
}

你试过这个吗?在

相关问题 更多 >