在纯C ++中使用C ++函数,在其签名中调用boost :: python对象

时间:2018-05-17 16:50:32

标签: python c++ boost

我试图将一些用boost :: python编写的库函数集成到我正在使用的一些C ++代码中。我为这些函数的纯C ++版本编写了单元测试,并且我希望能够在boost :: python版本上运行它们。但是,我遇到了这个问题(预期我推测),即期望boost :: python对象的函数签名不被认为适用于C ++代码:

template<typename T>
static std::vector<T> contains(std::vector<T>& originalVector, boost::python::object fc)
{
     check to see if originalVector contains either a specific value or if a function evaluates to true for any value of the array
}

通过以下测试:

//Testing to see if a vector contains a single element

// SETUP
std::vector<int> originalVector = {0,1,2,3,4,5,6};
int targetValue = 4;
bool isExpected = true; 

// EXERCISE
bool isActual = Array::contains(originalVector, targetValue);

// VERIFY
ASSERT_EQ(isExpected, isActual);

给出错误消息:

error: no matching function for call to 'contains' Array::contains(originalVector, subVector);

我是boost :: python的新手,但我想象这是一个半常见的事情,并且必须有一些方法来适当地复制/转换传入的python对象以允许该函数从纯C ++中调用。

感谢您提出的任何建议。

0 个答案:

没有答案