是否可以根据CPPYY中的函数参数排除类方法?
例如,假设一个类有两个构造函数:
class A
{
A(int);
A(double);
};是否可以选择A类,但排除两个构造函数中的一个?
选择和排除类/方法是使用gen反射实用程序完成的,它使用XML文件配置CPPYY。但是还不清楚XML文件是否支持这个级别的规范。
发布于 2019-08-21 15:45:57
为了完整起见,也在这里张贴:
不,不存在这样的特征。(将方法全盘排除是lcgdict规范的一部分,但我认为这一点甚至没有实现。)
如果您想将ctors减少到1,这在Python中是快速而简单的。示例:
import cppyy
cppyy.cppdef("""
class A
{
public:
A(int) { std::cerr << "int called" << std::endl; }
A(double) { std::cerr << "double called" << std::endl; }
};
""")
def pythonize_A(klass, name):
if name == 'A':
klass.__init__ = klass.__init__.__overload__("int")
cppyy.py.add_pythonization(pythonize_A)
from cppyy.gbl import A
a = A(1)
b = A(1.) # <- fails with TypeError原则上,您甚至可以编写一个自定义__init__,对您希望保留的构造函数进行重载(例如,对使用__overload__选择的子集进行简单循环)。
或者,您也可以使用交叉继承来实现相同的目标。
https://stackoverflow.com/questions/57582406
复制相似问题