建構子
沒有建構子的 class 要在宣告 mapping 的時候給建構子的 prototype
std::vector<>
跟 python 對接的陣列,要用 boost::python::list
Overloading function
使用「明確轉型」來指定特定的 overloading 版本
import_array()
使用 numpy 要 import_array() ,不然執行期用 PyArray_SimpleNewFromData() 建立陣列的時候會 segmentation fault。特別注意的是 import_array() 其實是一個陣列,他會去初始化一個 static variable 叫做 PyArray_API 。 PyArray_API 是一個 compile unit static variable,所以每一個 .cpp 檔自己都要 import_array() ,但重複 import 又會錯,所以呼叫前要先檢查 PyArray_API 這個變數是否已經被設定。
if (PyArray_API == NULL) {
import_array();
}