我正在尝试将一些C++函数包装到Python包装器中.为此,似乎SWIG是一种简单易行的方式.
包装工作,但通过引用或指针传递整数时出现问题.由于Python无法使用引用,因此SWIG在内部将这些转换为指针.
一些简单的示例代码:
Blaat.hpp:
#ifndef __BLAAT_HPP__
#define __BLAAT_HPP
class Blaat
{
public:
int mA;
float mB;
public:
Blaat() {}
void getA(int & fA);
void setA(const int fA);
~Blaat() {}
};
#endif // __BLAAT_HPP__
Run Code Online (Sandbox Code Playgroud)
Blaat.cpp
#include "Blaat.hpp"
#include <iostream>
void Blaat::getA(int & fA) {
std::cout << "[Blaat::getA] fA = " << fA << std::endl;
fA = mA;
}
void Blaat::setA(const int fA) {
std::cout << "[Blaat::setA] fA = " << fA << std::endl;
mA = fA;
}
Run Code Online (Sandbox Code Playgroud)
Blaat.i:
%module Blaat
%{ …Run Code Online (Sandbox Code Playgroud) 简单的例子:
myList = [1, 2, 3, 4, 5]
for obj in myList:
obj += 1
print myList
Run Code Online (Sandbox Code Playgroud)
版画
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
而:
myList = [1, 2, 3, 4, 5]
for index in range(0,len(myList)):
myList[index] += 1
print myList
Run Code Online (Sandbox Code Playgroud)
版画
[1, 2, 3, 4, 5]
[2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
结论:
我能找到的所有示例代码都使用全局列表访问器来修改列表.修改列表迭代器是否如此邪恶?