2017-05-05 184 views
-8

我试图导入到C++类,一些Ç代码,这是非常复杂的,我不明白(请尽量不要杀我,我不知道C++使用类的成员函数指针

里面一个cpp I类有成员:

void Bluetooth::nus_data_handler(ble_nus_t * p_nus, uint8_t * p_data, uint16_t length) 
{...} 

void Bluetooth::services_init(void) 
{ 

    ble_nus_init_t nus_init; 
    nus_init.data_handler = nus_data_handler; //********* problem is here ! 
} 

所以,当这两个功能是相同的C文件,其确定,但是当他们是一个C++ CLAS成员有一个错误,我不能将此功能从一种转换到另一种。

我明显做了一些愚蠢的事情,如何纠正它?

+1

在我看来,这是一个正确的问题(没有用正确的术语表达)。 –

+2

@AlejandroMontilla不,不是。 MCVE在哪里? – LogicStuff

+0

您没有显示您尝试*使用*的上下文。 C++类的成员函数有一个隐含的'this'指针被传递(通常作为第一个参数,但我认为这取决于实现),因此它们不能被视为“常规”C函数。如果你有一个'static'函数,那么它就不是一个真正的成员,并且可以像对待一个普通的C函数一样处理。如果它*具有*作为成员函数,那么你有很多工作要做,而且问题中没有足够的代码让我们知道如何帮助你。 –

回答

1

将类添加到混合中时,C++中的函数指针开始变得棘手。看看这个问题:function pointers to member functions。您需要处理的隐式this指针。毕竟,该功能不存在于对象的INSTANTIATION之外。除非函数被定义为静态,否则你应该工作。