Cython和c++;类构造函数 有人能提出一种用Cython来操纵C++对象的方法吗? 一个类的C++实例将被导入另一个包的构造函数。 类,如下所述
请查看pyx文件中PySession类的注释,其中 将python PyConfigParams对象作为参数,然后需要 从它中提取值,以便构造C++配置参数 对象然后使用ConfigParams对象为构造函数提供数据 会议结束 最好有一个能让我“注射”的程序 PyStPARAMS对象包装的CopyPARAMS C++对象 直接进入会话的构造函数,无需拆卸 它首先建立一个新的C++对象来给构造函数进行进给。 这当然有效。然而,实现这个解决方案是一种麻烦、残忍的方式,更不用说不可靠了 我知道PyCapsule,但是它可能需要触摸C++标题,这是我不能做的。< /P> 与此相关,但另一个问题是:如果我需要包装 类(我们假设这里是PyScript)来模拟C++的行为 通过返回ConfigParams实例的api?我需要做这个吗 反转并拆除C++对象以构建Python pyStasPARAMS 在Python世界中,哪个将返回给Python用户? 欢迎提出任何建议! 谢谢大家! <假设我有两个C++类,名为ConfigParams和Session。 ConfigParams的实例用于向 课时班: C++类 ConfigParams类Cython和c++;类构造函数 有人能提出一种用Cython来操纵C++对象的方法吗? 一个类的C++实例将被导入另一个包的构造函数。 类,如下所述,c++,python,cython,word-wrap,C++,Python,Cython,Word Wrap,请查看pyx文件中PySession类的注释,其中 将python PyConfigParams对象作为参数,然后需要 从它中提取值,以便构造C++配置参数 对象然后使用ConfigParams对象为构造函数提供数据 会议结束 最好有一个能让我“注射”的程序 PyStPARAMS对象包装的CopyPARAMS C++对象 直接进入会话的构造函数,无需拆卸 它首先建立一个新的C++对象来给构造函数进行进给。 这当然有效。然而,实现这个解决方案是一种麻烦、残忍的方式,更不用说不可靠了 我知道PyCa
//ConfigParams.h
#包括
使用名称空间std;
类ConfigParams
{
int参数1;
公众:
ConfigParams(int par1){this->parameter1=par1;}
int getPar1(){返回此->参数1;}
};
课时班
//Session.h
#包括
使用名称空间std;
#包括“configparams.h”
课堂
{
int sessionX;
公众:
会话(ConfigParams参数){this->sessionX=parameters.getPar1();}
无效剂量();
};
void会话::doSomething()
{
cout溶液:
在configparams.pxd模块中转发声明PyConfigParams(以便可以从session.pyx模块调用它)
在SeStudi.Pyx模块中导入PyStasePARAMs,并为Suncutor转换参数,这将授予对C++对象的PySosiPARAMS指针的访问,这将需要被撤销。
# session.pyx
from configparams cimport PyConfigParams
from cython.operator cimport dereference as deref
cdef class PySession:
cdef Session* thisptr
def __cinit__(self, PyConfigParams pars):
self.thisptr = new Session(deref(pars.thisptr))
def doSomething(self):
self.thisptr.doSomething()
# session.pyx
from configparams cimport PyConfigParams
from cython.operator cimport dereference as deref
cdef class PySession:
cdef Session* thisptr
def __cinit__(self, PyConfigParams pars):
self.thisptr = new Session(deref(pars.thisptr))
def doSomething(self):
self.thisptr.doSomething()