我正在尝试使用 boost.python 将以下 c++ 函数公开给 python:
template <typename genType>
genType refract(
genType const & I,
genType const & N,
typename genType::value_type const & eta);
Run Code Online (Sandbox Code Playgroud)
我得到的是这个:
template<typename N>
N reflect(N const & i, N const & n, typename N::value_type const & eta)
{
return glm::N refract(i,n,eta);
}
BOOST_PYTHON_MODULE(foo)
{
def("reflect", reflect<float>);
def("reflect", reflect<double>);
}
Run Code Online (Sandbox Code Playgroud)
编译时出现以下错误:
错误 C2780:'void boost::python::def(const char *,F,const A1 &,const A2 &,const A3 &)':需要 5 个参数 - 提供 2 个
我应该如何包装它?
- - -编辑 - - -
这有效:
template<class …Run Code Online (Sandbox Code Playgroud) 我有一个C++函数,它返回一个结构列表.在struct中,有更多的结构列表.
struct CameraInfo {
CamName name;
std::list<CamImageFormat> lImgFormats;
std::list<CamControls> lCamControls;
};
std::list<CameraInfo> getCameraInfo()
{
std::list<CameraInfo> lCamerasInfo;
// fill lCamerasInfo
return lCamerasInfo;
}
Run Code Online (Sandbox Code Playgroud)
然后出口我我用的是:
class_<CameraNode....> >("CameraNode", no_init)
...
...
.def("listCameraInfo", make_function(&CameraNode::listCameraInfo))
.staticmethod("listCameraInfo")
...
;
Run Code Online (Sandbox Code Playgroud)
这是好的,因为我使用cout在屏幕上打印数据...我想现在使用返回值和它的内容来自python类属性,这样:
cameras = []
cameras = CameraNode.getCameraInfo()
print cameras[0].name
print cameras[0].lImgFormats[0]
and so on...
Run Code Online (Sandbox Code Playgroud)
这有可能吗?我应该使用add_property吗?我不认为我可以为每个结构创建一个类.这个设计在我只使用C++时很有意义,但是现在我必须把它包起来,我越来越困惑了.
有关以一般方式使用boost.python包装std :: list的任何建议都将被广泛接受.
我将在这里添加我发现有用的链接: 迭代器 StlContainers
是否有可能像python和其他语言一样进行LC,但只使用BASH结构?
我希望能做什么,例如:
function ignoreSpecialFiles()
{
for options in "-L" "-e" "-b" "-c" "-p" "-S" "! -r" "! -w"; do
if [[ $options "$1" -o $options "$2" ]];then
return $IGNORED
fi
done
}
Run Code Online (Sandbox Code Playgroud)
而不是使用这样的代码:
if [[ -L "$1" -o -e "$1" -o -b "$1" -o -c "$1" -o -p "$1" -o -S "$1" -o\
! -r "$1" -o ! -w "$1" ]]
Run Code Online (Sandbox Code Playgroud)
你知道有关模拟LC的任何食谱吗?
一个更具LC的具体例子:
M = [x for x in S if x % 2 == 0] #is python
Run Code Online (Sandbox Code Playgroud)
什么是在bash中做同样的pythonic方式? …