【发布时间】:2013-11-15 06:29:10
【问题描述】:
我在一个 C++ 类(我们称之为 classA)中有一个公共方法,它被定义为:
void someFunction(someOtherCppClassB* arg);
此“someFunction”方法执行以下操作:
theConnection = registerFunction(aPtrToAnInstanceOfCStruct1, boost::bind(&classA::callbackFunction, this, _1));
其中 'theConnection' 是 ClassA 中的私有成员变量,其类型为 boost::signals2::connection
其中 'callbackFunction' 是 classA 中的私有方法,定义为:
int callbackFunction(cStruct2** doublePtr);
其中 'aPtrToAnInstanceOfCStruct1' 是指向此 C 结构实例的指针:
typedef struct cStruct1T
{
boost::signals2::signal<int (cStruct2**)> signalVariable;
} cStruct1
而cStruct2定义为:
typedef struct cStruct2T
{
/* Variables in this struct */
char someDummyVariable;
} cStruct2
'registerFunction' 定义为:
boost::signals2::connection registerFunction(cStruct1* aPtrToAnInstanceOfCStruct1, boost::function<int (cStruct2**)> someCallbackFunction)
{
/* THIS FAILS FOR SOME REASON */
return aPtrToAnInstanceOfCStruct1->signalVariable.connect(someCallbackFunction);
}
由于某种原因,.connect() 在 Android 4.3 上生成以下内容:
F/libc (8556):致命信号 11 (SIGSEGV) 位于 0x0000000c (code=1),线程 8556
我无法弄清楚导致错误的原因。所以我希望有一个 Boost 专家可以看看上面的代码并告诉我我做错了什么。
谢谢。
【问题讨论】:
标签: android c++ c boost android-ndk