我正在使用Boost在我的应用程序中嵌入Python。例如,我想检查以下函数是否接收一个整数和一个字符串作为第一个和第二个参数(该函数在C ++中定义)。
someFunction(123, 'words')
如果我发现参数不正确,我该如何通知脚本编写者他们需要纠正哪一行,例如?
答案 0 :(得分:3)
如果使用通常的def("someFunction",someFunction,...)
包装函数,调用者将自动通知有关c ++签名的通知,这些签名无法与从python传递的对象匹配,就像这样(该方法需要一个字典参数,用3个数字调用):
>>> scene.updateAttrs(1,2,3)
ArgumentError: Python argument types in
Serializable.updateAttrs(Scene, int, int, int)
did not match C++ signature:
updateAttrs(Serializable {lvalue}, boost::python::dict)
您可以发布一些代码来查看您的问题吗?
答案 1 :(得分:1)
使用您希望他们知道的所有信息来引发异常,就像在Python中一样。事实上,这个答案似乎很明显,这让我觉得我在你的问题中遗漏了一些东西。