我有一个包含两个类似的非静态函数的类,我想将其中一个动态分配给一个函数指针:
A.H:
A::A(int i){
if(i == 1)
A::funcPtr = A::do_sth; // or &A::do_sth;
else
A::funcPtr = A::do_sth_else; // or &A::do_sth_else;
}
A.cpp:
error: cannot convert 'A::do_sth' from type 'void (A::)(int)' to type 'void (*)(int)'
但是我得到了这样的错误:
$value = 49;
$packed = pack('S', $value); // returns correct hex
$formatted = $packed ^ 0b1000000000000000; // returns too long number - 4 bytes instead of 2
我读过多个类似的问题,但无法在我的问题上应用他们的解决方案。
答案 0 :(得分:1)
这些是会员功能。通过使用类名限定funcPtr
成员指针,或者使do_sth()
,do_sth_else()
静态成员函数。我建议在获取地址时在功能名称前面使用&
。