Cython-Klasse mit Vorlage schreiben?C++

Programme in C++. Entwicklerforum
Guest
 Cython-Klasse mit Vorlage schreiben?

Post by Guest »

Hintergrund: Ich bin ziemlich neu bei Cython und habe keine Erfahrung mit C++. Ich kenne die C++-Vorlagenfunktion und bin mir nicht wirklich sicher, wie man eine richtige Klasse in C++ schreibt.
Ziel: Ich versuche, eine Klasse zu schreiben in Cython, das das Verhalten eines Wörterbuchs nachahmt. Anstelle von Zeichenfolgen möchte ich jedoch Enum oder andere benutzerdefinierte Typen als Schlüssel verwenden.
Vorherige Forschung: Basierend auf 1, 2 und 3 , es scheint, als ob ich Vorlagen in Cython-Klassen verwenden kann. Aber ich konnte keine andere Dokumentation dazu finden.
Meine Versuche: Angesichts dessen ist das, was ich geschrieben habe, nur eine einfache Modifikation einer Cython-Klasse I ohne Vorlage geschrieben, die lautet:

Code: Select all

cdef class ScalarDict[T]:
cdef:
public long N
public long ndata
size_t size
long __current_buffer_len
T * __keys
double ** __values

def __cinit__(self, long ndata, long N=4):
cdef long i
self.__current_buffer_len = N
self.N = 0
self.ndata = ndata
self.size = ndata*sizeof(double)
self.__keys = malloc(self.__current_buffer_len*sizeof(T))
self.__values = malloc(self.__current_buffer_len*sizeof(double *))

def __dealloc__(self):
cdef long i
if self.N > 0:
for i in range(self.N):
if self.__values[i] != NULL:
free(self.__values[i])
if self.__values != NULL:
free(self.__values)
if self.__keys != NULL:
free(self.__keys)

# other methods...
Aber das Kompilieren schlägt fehl, mit Fehlermeldungen wie Namensoptionen, die nur für die C-Klasse „public“, „api“ oder „extern“ zulässig sind und „Erwartetes „Objekt““ 'type' oder 'check_size' in der Zeile mit der CDEF-Klasse ScalarDict[T]:.
Wie geht das richtig? Oder ist das nicht möglich?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post