SWIG:如何从SwigPyobj获取包装的std::shared\u ptr的值

2021-05-16 07:35:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试为C++库创建一个Spy-Python接口,为一些函数添加Python包装,我将非常感激来自Sigg的一些人的帮助。你知道吗

目前我有这样的消息来源:

试验h

namespace Test {
class CodeResponseEvent {
 public:
  CodeResponseEvent(std::string activation_code);
  std::string getActivationCode() const;
 private:
  const std::string activation_code_;
};

class CodeRequestEvent {
 public:
  CodeRequestEvent(std::string user_id);
  std::shared_ptr<CodeResponseEvent> execute();

 private:
  const std::string user_id_;
};
}

测试.i

%module test
%include std_string.i
%include <std_shared_ptr.i>

%{#include "test.h"%}
%include "test.h"
%shared_ptr(Test::CodeResponseEvent);

Python代码如下所示:

codeResponse = test.CodeRequestEvent("user").execute()

结果我得到了价值

<Swig Object of type 'std::shared_ptr< Test::CodeResponseEvent> *'>

所以问题是如何打开这个SwigPyobject来调用getActivationCode()方法?你知道吗