【问题标题】:References in CythonCython 中的参考文献
【发布时间】:2016-08-22 10:56:19
【问题描述】:

我在 Cython 中尝试引用时遇到了一些麻烦。 我正在使用此代码创建一个 int 并对其进行引用。

cdef int i = 10;
cdef int& integer_ref = i;

但是,我不知道如何通过 integer_ref 更改 i 的值。在 C 语言中,我只使用integer_ref = some_other_value,这会将i 的值设置为some_other_value

但是,在 cython 中执行此操作会返回错误,因为不允许分配给引用。 我也尝试了integer_ref[0] = some_other_value,但它试图索引一个不允许的int &。我应该使用什么? 我发现this post on the cython-users list 似乎暗示这是一个已知的错误,但我不太确定。使用(&integer_ref)[0] = some_other_value 链接中的解决方法也对我不起作用。

谢谢!

【问题讨论】:

  • 请注意,链接中提出的解决方法不是integer_ref[0] = other_value,而是(&integer_ref)[0] = other_value
  • 对不起,我并不是要暗示我使用integer_ref[0] = other_value 作为链接中的解决方法。链接中的解决方法也对我不起作用,引发了长时间的编译错误。谢谢你看,我忘了说。

标签: python c++ reference cython


【解决方案1】:

您可以使用标准指针来解决这个问题。例如,

def test():
    cdef:
        int i = 10
        int* ref = &i

    print(ref[0])  # Prints 10
    ref[0] = 5
    print(i)  # Prints 5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多