Python中文
首页
教程
问答
标签
搜索
登录
注册
Cython中是否可以使用C++风格的内部typedef?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<P> C++中,可以声明类或结构成员的类型别名:</P> <pre><code>struct Foo { // internal type alias typedef int DataType; // ... }; </code></pre> <p>在Cython有什么方法可以做同样的事情吗?我尝试过最明显的方法:</p> ^{pr2}$ <p>但这行不通:</p> <pre><code>Error compiling Cython file: ------------------------------------------------------------ ... # distutils: language=c++ cdef struct Foo: ctypedef int DataType ^ ------------------------------------------------------------ internal_typedefs_example.pyx:4:4: Expected an identifier, found 'ctypedef' </code></pre> <p>这仅仅是Cython的一个基本限制(我使用的是v0.21.2),还是有变通方法?在</p> <hr/> <p>为什么要使用内部typedef?有几个一般原因-<a href="https://stackoverflow.com/q/759512/1461210">this previous SO question</a>涵盖了其中一些原因。在</p> <P>我感兴趣的特定案例是包装一组模板C++类,看起来类似于:</p> <pre><code>struct Foo<a href="https://www.cnpython.com/pypi/dataset" class="inner-link">dataset</a> { typedef int DataType; typedef float ReturnType; // methods, other important stuff }; struct BarDataset { typedef long DataType; typedef double ReturnType; // methods, other important stuff }; template <class Dataset> class DataProcessor{ DataProcessor(Dataset& input_data); typedef typename Dataset::DataType T; typedef typename Dataset::ReturnType R; T getDataItem(); R computeSomething(); /* etc. */ // do some other stuff that might involve T and/or R }; </code></pre> <p>将typedef放在结构内部可以提供更好的封装,因为我只需要传递一个模板参数(即<code>Dataset</code>类),而不是单独指定特定于<code>Dataset</code>类型的<code>T, R, ...</code>。在</p> <p>我意识到要找到解决这个问题的方法并不太困难——我最感兴趣的是得到一个明确的答案,即Cython目前是否可以使用内部typedef。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>据我所知,Cython目前不支持这一功能。但是你不能在结构之外定义它吗?在</p> <P> Cython目前不被设计为C++的替代品,而是一种加速Python代码热点的方法。如果你需要更多的参与,只需在C++中编写并公开Python绑定。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
当用户用PYTHON设置一个或一个不带值的URL时,他们怎么能输入一个/a的代码呢?
8 回答
当用户登录到站点时,如何显示不同的导航栏
4 回答
当用户登录时,在Flask中向用户显示处理结果
6 回答
当用户的Flask会话结束时,我如何从Redis后端中移除所有Celery结果?
7 回答
当用户的Okta配置文件字段当前为blan时,更新该字段
2 回答
当用户的付款逾期2天时,从Django模型检索数据
7 回答
当用户的消息以问号结尾时,如何让机器人说些什么?
6 回答
当用户的系统上可能也安装了Python 2.7时,如何在用户的系统上运行Python 3脚本?
3 回答
当用户确定打印数量时,使用Matplotlib打印动画
9 回答
当用户离开时是否可以删除整个网页?
10 回答
当用户给出一个单词时如何打印?
2 回答
当用户继续更改TKin中的值(使用trace方法)时,使用Entry并更新输入的条目
7 回答
当用户编辑表单字段时,从Django时间字段中删除秒数
8 回答
当用户被更改时,消息不会来自web套接字
3 回答
当用户访问表单时,如何使表单为只读,而不具有更改权限
3 回答
当用户试图更改对象的值时,使用描述符类引发RuntimeError
3 回答
当用户调整GUI的大小时,是否有方法更改GUI内容的大小?
6 回答
当用户调整风的大小时,pythontkinter小部件的大小会不均匀
4 回答
当用户购买某个类别时,是否查找其他类别的销售?
2 回答
当用户转到上一页时,Django和芹菜插入操作
8 回答