这里的概念是扩展示例以使“run()”成员函数返回两个值的元组。我一直在寻找广泛而且没有发现这是可能的。该示例包含此函数,没有返回值:
virtual void run() {
std::cout << "Callback::run()" << std::endl; }
我能够让这个工作:
virtual long run() {
std::cout << "Callback::run()" << std::endl; return 23; }
我能够让这个工作:
virtual long run(long value) {
std::cout << "Callback::run()" << std::endl; return 23+value; }
但典型的“附加输出”功能似乎不适用于导演/回调机制:
virtual long run(long *rcP) {
std::cout << "Callback::run()" << std::endl; *rcP = 99 ; return 23+value; }
“example.I”中的以下SWIG指令:
%include typemaps.i
%apply long *OUTPUT { long *rcP };
通常会导致函数返回“(23 + value,99)”元组。
我还没有发现SWIG指令的组合会在回调上生成一个元组;但是在导演/回调的情况下,参数和返回值之间根本没有创建链接。