【发布时间】:2012-11-12 01:05:26
【问题描述】:
在C++中给定一个PyObject*,如何判断它是否是PyLongDoubleScalarObject的实例?
PyLongDoubleScalarObject是对应的numpy类来存储128bit浮点数(long double),在numpy/arrayscalars.h中定义。
使用dynamic_cast 不能作为PyObject* 非多态。当我查看如何为PyObject 执行与dynamic_cast 相对应的操作时,我通常会找到使用PyLong_Check 之类的函数的提示,但我找不到PyLongDouble_Check 之类的东西。
【问题讨论】:
-
PyLongDoubleScalarObject应该像每个非可变长度PyObject一样包含一个名为ob_type的成员,它是一个指向表示该类型的对象的指针。对于相同类型的所有 Python 对象,它应该指向相同的地址,通常是名为X_Type的对象的地址,其中X是类型名称。我不确定在这种情况下类型对象的名称是什么。
标签: c++ python numpy boost-python