[Cython] nested C++ classes, the third: default constructor

Simon Anders anders at embl.de
Thu Jan 19 22:46:48 CET 2012


Hi,

sorry for spreading these issues into three mails, but I cannot quite 
figure out whether they are related or not. So, here is the third 
installment of my adventures with nested classes.

Consider the following code which compiles fine:

---8<---
cdef extern from "foo":
    cdef cppclass outer[T]:
       outer( )
       cppclass inner:
          pass

cdef outer[int].inner bar
---8<---

If I change 'outer' to lose its default constructor, the last line, 
which instantiates 'inner', causes an error:

---8<---
cdef extern from "foo":
    cdef cppclass outer[T]:
       outer( int )
       cppclass inner:
          pass

cdef outer[int].inner bar
---8<---

The only change is that the constructor to 'outer' now takes an 
argument. Now, the last line causes this error:
    "C++ class must have a default constructor to be stack allocated".

However, 'inner' does have a default constructor, only 'outer' does not.

Could it be that Cython looks for the constructor for the outer class 
where it should look for the constructor for the inner class?

Cheers
   Simon


More information about the cython-devel mailing list