text: Title: Integration with Cython C++ classes
  Body: Hi team,
  
  We extensively use Numba in our research and its excellent! Our teams also use Cython to expose C++ extensions, often writing C++ classes that are exposed into Python with Cython wrapper classes.
  
  Our issue is interacting with these Cython wrapper class inside numba methods. Similar to standard python classes, we're unable to pass the wrapper class into a numba function as an argument (with either @numba.njit or @numba.jit).
  
  We can use Numba's experimental jitclass as arguments but we're unable to link the jitclass to the C++ or the cython wrapper class.  It would be an incredibly useful feature to support interaction between Numba and Cython C++ class extensions. 
  
  Is there any mechanism that currently supports this interaction or could the team investigate this as a feature request? 
  
  Many thanks,
  Adam
  
  ```
  # 1. exposing C++ class
  cdef extern from "foo.h" namespace "Bar":
      cdef cppclass FooBar:
          FooBar() noexcept
          bint has_next() noexcept
          cnp.ndarray get() except +
  ```
  
  ```
  # 2. python wrapper class
  @cython.cclass
  class PyFooBar:
  
      # pointer to C++ FooBar
      foo_bar: unique_ptr[FooBar]
  
      def __cinit__(self) -> None:
          self.fooBar = make_unique[FooBar]()
  
      def iterate(self) -> typing.Generator[np.ndarray]:
          while dereference(self.foo_bar).has_next():
              data: cnp.ndarray = dereference(self.foo_bar).get()
              yield data
  ```
  
  
  ```
  # 3. numba target function 
  @numba.njit
  def test(fb) -> None:
      for entry in fb.iterate():
          # something useful here
          print(entry)
  ```
  
  
  ```
  # 4. experimental jitclass
  @numba.experimental.jitclass([])
  class NumbaFooBar:
  
      def __init__(self) -> None:
          pass
  
      def iterate(self)-> typing.Generator[np.ndarray]:
          yield np.array([1, 2, 3])
          yield np.array([4, 5, 6])
  ```
  
  