0

我有调用函数指针的 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相当buf大。

输出是:

------------------------------
lengh of DATA_output = 42
------------------------------

Someclass::myPOnSendData len = 50512

怎么可能?

4

1 回答 1

0

您说这myPOnSendData不是静态成员函数,但您正试图将指向它的指针分配给 C 指向函数的指针。这不起作用,因为指向函数的 C 样式指针不支持非静态成员函数。

如果将函数更改为静态,它将与指针类型兼容。

请注意,由于类型当前不兼容,因此在尝试分配函数指针时可能会收到错误消息,并且必须执行强制转换才能绕过它。不要这样做,因为您只是隐藏错误而不是解决它。

于 2014-07-28T13:44:01.610 回答