1
C++에서 제네릭 스택을 만든 다음 모듈을 빌드하고 SWIG를 사용하여 파이썬으로 확장하려고합니다. 이를 위해
은 templated_stack.h의 코드는 다음과 같다Python 오류 : SWIG에 정의 된 생성자가 C++ 템플릿 코드의 모듈을 생성하지 않았습니다.
#include <string>
template <typename T>
class mNode {
public:
T data;
mNode* next;
/* mNode() { } */
mNode(T d) {
data = d;
next = NULL;
}
};
template <typename T>
class mStack {
mNode<T> *topOfStack;
mStack();
void push(T data);
T pop();
};
template <class T> mStack<T>::mStack() {
topOfStack = NULL;
}
template <class T> void mStack<T>::push(T data) {
mNode<T>* newNode = new mNode<T>(data);
newNode->next = topOfStack;
topOfStack = newNode;
}
template <class T> T mStack<T>::pop(void) {
mNode<T>* tempTop = topOfStack;
T dataToBePopped = tempTop->data;
topOfStack = topOfStack->next;
delete tempTop;
return dataToBePopped;
}
%module TemplatedStack
%{
#include <string>
#include "templated_stack.h"
%}
%include "templated_stack.h"
%template(IntStack) mStack <int>;
을 다음과 내가 따라 컴파일 및 건물 모듈있어 나는 작성한 인터페이스 파일은 templated_stack.i입니다 다음과 같은 코드를 가진 script compileScript.sh
모듈이 성공적으로 빌드되었고 아무런 오류없이 가져오고 있습니다. 내가 오류
in __init__(self, *args, **kwargs)
75 __swig_getmethods__ = {}
76 __getattr__ = lambda self, name: _swig_getattr(self, IntStack, name)
---> 77 def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined")
78 __repr__ = _swig_repr
79 __swig_destroy__ = _TemplatedStack.delete_IntStack
AttributeError: No constructor defined
다음 얻고있다
from TemplatedStack import IntStack
t = IntStack()
을 다음과 같이 IntStack의 객체를 만들려고하지만 어떤 도움 사전 의 GitHub의 링크에서 위의 오류를
감사에 대한 감사하겠습니다 저장소가 this