我试图将一些用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 ++中调用。
感谢您提出的任何建议。