[C++-sig] A callback function with arguments causes error
Bruce Who
bruce.who.hk at gmail.com
Thu May 10 17:57:16 CEST 2007
Hi, all
I have some callback functions in my .cpp files and I want to wrap
them into python scripts with swig. So I have tried this example
first: swigwin-1.3.31/Examples/python/callback. This example compiles
and runs well. But this callback function takes no arguments, so I
changed it a little:
// example.h
class Callback {
public:
virtual ~Callback() { std::cout << "Callback::~Callback()" << std:: endl; }
// XXX this is the original statement
// virtual void run() { std::cout << "Callback::run()" << std::endl; }
virtual void run(int* pn) { std::cout << "Callback::run()" << (*pn)
<< std::endl; }
};
class Caller {
private:
Callback *_callback;
public:
Caller(): _callback(0) {}
~Caller() { delCallback(); }
void delCallback() { delete _callback; _callback = 0; }
void setCallback(Callback *cb) { delCallback(); _callback = cb; }
// XXX void call() { if (_callback) _callback->run(); }
void call()
{
if (_callback)
{
int i = 90;
// XXX _callback->run(i);
_callback->run(&i);
}
}
};
As you see, I just add a int* argument to this callback. It compiles
but it cause python.exe to crash while running. Could anybody tell me
how to solve this? Any help would be appreciated!
Bruce
More information about the Cplusplus-sig
mailing list