これは、 1日半前にcython-userグループで尋ねた質問のクロスポストですが、まだ返信がないので、より一般的なフォーラムで運試しをしています。
私はさまざまな程度のエラーで、この次のコードをラップするためにあらゆる方法を試みてきました。たくさんの検索で、私は同様の質問と優れたウィッシュリストチケットに出くわしましたが、正直なところ、私が正しい道を進んでいるかどうかはわかりません。
plow_types.h:
namespace Plow {
struct JobState {
enum type {
INITIALIZE = 0,
RUNNING = 1,
FINISHED = 2
};
};
...
class JobFilterT {
public:
...
std::vector<JobState::type> states;
...
だから私はこのPlow::JobState::type
列挙型をラップしようとしています。別の同様の投稿を見つけた後、私が得た最も近いものは、この試みで終わっていました:
plow_types.pxd:
cdef extern from "rpc/plow_types.h" namespace "Plow":
enum JobState_type "Plow::JobState::type":
INITIALIZE "Plow::JobState::INITIALIZE"
RUNNING "Plow::JobState::RUNNING"
FINISHED "Plow::JobState::FINISHED"
struct JobState:
JobState_type type
...
cdef cppclass JobFilterT:
vector[JobState_type] states
そして、私はエラーを受け取ります:
src/plow.cpp: In function ‘std::vector<Plow::JobState::type, std::allocator<Plow::JobState::type> > __pyx_convert_vector_from_py_enum__Plow_3a__3a_JobState_3a__3a_type(PyObject*)’:
src/plow.cpp:6688: error: invalid conversion from ‘long int’ to ‘Plow::JobState::type’
いずれか/または:
- このネストされた列挙型を適切にラップするにはどうすればよいですか?
- これを正確にラップするためにこれも必要ですか、それとも他の方法でこれらの「名前空間」定数にアクセスするという私の目標を達成できますか?これらの構造体を完全に無視し、int値と一致する独自のバージョンの定数をpyxで定義する必要がありますか?
cython pyxで定数の独自のバージョンを定義し、すべてをint( )として処理しようとしましたが、コンパイラーはからへvector[int] states
の変換方法がわからないと文句を言います。int long
Plow::JobState::type