Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

boost::python fails to correctly handle constness of wrapped classes

未關閉
#205 2 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

評估

難度
5/5
預估耗時
一週以上
新手友好度
25/100
Issue 類型
缺陷
描述清晰度
基本清楚
活躍度
停滯
技術堆疊
cpp, python

研究方向

從 issue 中的最小 Foo 和 producer 範例開始,然後檢查 boost::python::class_、boost::python::def 以及 shared_ptr 到 Python 的轉換器路徑。重現執行階段缺少轉換器的錯誤和編譯時的 constness 錯誤;當 const std::shared_ptr 的結果可以在不出現這些失敗的情況下進行封裝時,即表示完成。

由索引模型根據 Issue 內容生成。

描述

I want to wrap C++ code that only provides const access to a class Foo:

struct Foo {};
std::shared_ptr<const Foo> producer();

Wrapping Foo as usual:

BOOST_PYTHON_MODULE(foo) {
    boost::python::class_<Foo, std::shared_ptr<Foo>, boost::noncopyable>("Foo", boost::python::no_init);
    boost::python::def("producer", &producer);
}

compiles fine, but complains at runtime - obviously - about a missing type converter:
No to_python (by-value) converter found for C++ type: std::shared_ptr<Foo const>

Alternatively trying:

BOOST_PYTHON_MODULE(foo) {
    // const holder
    boost::python::class_<Foo, std::shared_ptr<const Foo>, boost::noncopyable>("Foo", boost::python::no_init);
    // const class + holder
    boost::python::class_<const Foo, std::shared_ptr<const Foo>, boost::noncopyable>("Foo", boost::python::no_init);
}

yields compile-time errors about constness issues. Isn't there a solution available that respects constness?

主要語言
C++
星號
537
分支
223
平均合併
11 小時 22 分鐘
30 天內合併 PR
2

貢獻指南

這個儲存庫沒有索引到貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

boostorg/python 的其他 Issue

查看 boostorg/python 的全部 Issue

相似的 Issue

更多 C++ Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。