我是相当新的C和C++。我有任务(这是更多的练习)将给定的c模块更改为C++。为此,我必须首先理解c文件。函数指针阵列:无效**铸造
我有两个具体的问题,但我想在短期内勾勒的功能部件。我尝试使用通用标识符。的C代码
摘录:
有其提供的功能来注册回调代理。 Broker在各自的数组中保存不同类型的回调。
首先,他们宣布了几个函数指针到指定回调:
typedef bool (*ReadRequestCallback_tpf) (param1 a, param2 b, param3 c);
typedef bool (*ReadResponseCallback_tpf) (param4 a, param5 b);
typedef bool (*WriteRequestCallback_tpf) (param6 a, param7 b, param8 c);
...
然后,他们做了数组为每种类型的持有注册的回调:
ReadRequestCallback_tpf ReadRequest_apf [MaxReadRequest];
ReadResponseCallback_tpf ReadResponse_apf [MaxReadResponse];
WriteRequestCallback_tpf WriteRequest_apf [MaxWriteRequest];
有考虑到职能注册新的回调:
void RegisterReadRequestCallback_v (ReadRequestCallback_tpf callback_pf){
AddCallback_v((void**)ReadRequest_apf, (void*) callback_pf);
}
void RegisterReadResponseCallback_v (ReadResponseCallback_tpf callback_pf){
AddCallback_v((void**)ReadResponse_apf, (void*) callback_pf);
}
void RegisterWriteRequestCallback_v (WriteRequestCallback_tpf callback_pf){
AddCallback_v((void**)WriteRequest_apf, (void*) callback_pf);
}
的签名是这样的:
void AddCallback_v (void* Array_apv[], void* function_pf)
我的问题:
是
(void**) array_apf
真的void* array_apv
? 因此,一个“函数指针阵列”的至铸造“空隙指向void指针”等于“空隙指针数组空隙指针的”? 因为它的工作原理,似乎是这样。但我真的不明白这一点。当试图将它(或部分)更改为C++,是否使用模板,而不是投给(无效*)更好的办法?
这是我第一次来这里。我希望我能解释我的问题。如果有事需要澄清,请告诉我。
此致和预先感谢您
C和C++不是同一种语言,您实际使用哪一种? – Barmar
实际的代码是用C编写的。每个代码片断都用C编写。将来,它应该用C++编写。 – DanK0904
而不是数组,你可以尝试一个std :: function的向量 –