代码之家  ›  专栏  ›  技术社区  ›  piotr

boost python的指针参数

  •  5
  • piotr  · 技术社区  · 15 年前

    使以指针为参数的函数与boostpython一起工作的最佳方法是什么?

    void Tesuto::testp(std::string* s)
    {
        if (!s)
            cout << " NULL s" << endl;
        else
            cout << s << endl;
    }
    
    >>> t.testp(None)
     NULL s
    >>>       
    >>> s='test'
    >>> t.testp(s)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    Boost.Python.ArgumentError: Python argument types in
        Tesuto.testp(Tesuto, str)
    did not match C++ signature:
        testp(Tesuto {lvalue}, std::string*)
    >>>                        
    
    1 回复  |  直到 15 年前
        1
  •  4
  •   Joe D    15 年前

    据我所知,在谷歌搜索了一下这个主题之后,你不能。默认情况下,Python不支持指针参数类型。如果您愿意,您可能可以手工编辑python解释器,但在我看来,这似乎是某种产品代码,所以这可能不是一种选择。

    :您可以添加如下包装函数:

     
    std::string * pointer (std::string& p)
    {
        return &p;
    }
    
    

    
    >>> s = 'hello'
    >>> t.testp (pointer (s))
    hello
    >>>