(I think this question can easily be answered by an expert without an actual copy-paste-working-example, so I did not spent extra time on it…)

I have a C++ method, which returns an array of integers:

```
int* Narf::foo() {
    int bar[10];
    for (int i = 0; i < 10; i++) {
        bar[i] = i;
    }
    return bar;
}

```

I created the Cython stuff for its class:

```
cdef extern from "Narf" namespace "narf":
    cdef cppclass Narf:
        Narf() except +
        int* foo()

```

And these are my Python wrappers:

```
cdef class PyNarf:
    cdef Narf c_narf
    def __cinit__(self):
        self.c_narf = Narf()
    def foo(self):
        return self.c_narf.foo()

```

The problem is the `foo` method, with its `int*` return type (other methods which I did not list in this example work perfectly fine!). It does not compile and gives the following error:

```
    def foo(self):
        return self.c_narf.foo()
                             ^
------------------------------------------------------------

narf.pyx:39:37: Cannot convert 'int *' to Python object

```

Of course, it obviously does not accept `int *` as return type. How do I solve this problem? Is there an easy way of wrapping this `int *` into a numpy array (I'd prefer numpy), or how is this supposed to be handled?

I'm also not sure how to handle the memory here, since I'm reading in large files etc.