Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cython和c++;类构造函数 有人能提出一种用Cython来操纵C++对象的方法吗? 一个类的C++实例将被导入另一个包的构造函数。 类,如下所述_C++_Python_Cython_Word Wrap - Fatal编程技术网

Cython和c++;类构造函数 有人能提出一种用Cython来操纵C++对象的方法吗? 一个类的C++实例将被导入另一个包的构造函数。 类,如下所述

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

请查看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类
//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()