我有C函数调用指向函数的指针(指向buf和buf的大小)
printf("------------------------------\n");
printf("lengh of DATA_output = %zu\n", p->tot_len);
(*myStr.OnSendData)(buf, p->tot_len);
printf("------------------------------\n");
指向函数的指针,如
typedef void (*pOnSendData)(void *buf, u16_t len);
然后我的真正的c ++类方法通过该指针获取它:
void Someclass::myPOnSendData(void *buf, u16_t len) {
std::cout << " Someclass::mypOnSendData len = " << (int)len << std::endl;
//Do something
}
问题是len
的{{1}}非常大。
输出是:
buf
怎么可能?
答案 0 :(得分:0)
你说myPOnSendData
不是一个静态成员函数,但你试图将一个指向它的指针指向一个C指针到函数。这不起作用,因为函数的C风格指针不支持非静态成员函数。
如果将函数更改为静态函数,它将与指针类型兼容。
请注意,由于类型当前不兼容,因此在尝试分配函数指针时可能会收到错误消息,并且必须执行转换才能绕过它。不要这样做,因为你只是隐藏错误而不是解决它。