论坛大神
  
- 积分
- 1612
- 金钱
- 1612
- 注册时间
- 2012-6-15
- 在线时间
- 39 小时
|
我在编程的时候遇到一个问题, 纠结中。
在类中, 有一个成员函数,其参数有一个是指针类型<>, 其定义如下
class A {
...
pulic:
typedef struct
{....}MsgType ; //结构体定义
MsgType MsgRsvBuffer; //本结构体内部的定义消息
void SendMessage( u8 len); //
void Transfer( //此函数 结构体内部调用也可由外部调用。
void(*sdmsg)(u8) , //第一个参数是指针类型
MsgType *msg, //颜色对应着调用
u8 len);
};
A a;
在类的外部, 假如这样调用 :
a.Transfer( A::SendMessage , &a.MsgRsvBuffer , 8) ;
会提示 函数指针类型不匹配, 原因是 一个是类内部,一个是全局函数指针类型,
解决方式: 将SendMessage 声明为 static方式,
可是 SendMessage函数里面用到了MsgRsvBuffer ,也必须声明为static的, 这样
上面的外部调用就不成立了,会提示MsgRsvBuffer 未定义。
如果 我将 SendMessage 定义为 voidSendMessage ( MsgType *msg, u8 len );
则, 在外部调用中,如何 指定SendMessage 里面的 msg 指针呢?
或者有其他更好的方式吗?
|
|