在C++中使用C++函数调用StUp::Python对象

2024-05-21 02:06:55 发布

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

我试图将一些在Boosi::python中编写的库函数集成到我正在使用的C++代码中。我已经为这些函数的纯C++版本编写了单元测试,并且我希望能够在Boosi::Python版本上运行它们。然而,我遇到了一个(预期的)假设问题,即期望升压的函数签名::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);

我是Boo::Python,但我想这是一个常见的现象,必须有某种方法来复制/抛出传入的Python对象,以允许函数从纯C++调用。p>

谢谢你的建议


Tags: to对象函数代码版本trueifvalue