///////////////////// 以下是C++的代码////////////////////////////
#include <stdio.h>enum EventType
{
a,
b,
c,
d
};
typedef void Callback (EventType, void*, void*);
class A
{
public:
A(){};
~A(){}; EventType type;
Callback* callback;
void* data;
void Register(EventType ,Callback ,int );
};
void A::Register(EventType t,Callback c,void* d)
{
type = t;
callback = c;
data = d;
}(报告出错了)
void main(void)
{
}///////////////////// C++的代码 完毕////////////////////////////报告的错误是:D:\tst.cpp(29) : error C2511: 'Register' : overloaded member function 'void (enum EventType,void (__cdecl *)(enum EventType,void *,void *),void *)' not found in 'A'
D:\tst.cpp(16) : see declaration of 'A'我想可能是 因为有 typedef void Callback (EventType, void*, void*); 就做了替换,Register(.....)的参数都不一样了吧?
怎么改正呢?
///////////////////// 以下是C的代码////////////////////////////#include <stdio.h>enum EventType
{
a,
b,
c,
d
};
typedef void Callback (EventType, void*, void*);EventType type;
Callback* callback;
void* data;void Register(EventType t, Callback c,void* d)
{
type = t;
callback = c;
data =d ;
return ;
}
void main(void)
{
}
///////////////////// C的代码 完毕////////////////////////////
#include <stdio.h>enum EventType
{
a,
b,
c,
d
};
typedef void Callback (EventType, void*, void*);
class A
{
public:
A(){};
~A(){}; EventType type;
Callback* callback;
void* data;
void Register(EventType ,Callback ,int );
};
void A::Register(EventType t,Callback c,void* d)
{
type = t;
callback = c;
data = d;
}(报告出错了)
void main(void)
{
}///////////////////// C++的代码 完毕////////////////////////////报告的错误是:D:\tst.cpp(29) : error C2511: 'Register' : overloaded member function 'void (enum EventType,void (__cdecl *)(enum EventType,void *,void *),void *)' not found in 'A'
D:\tst.cpp(16) : see declaration of 'A'我想可能是 因为有 typedef void Callback (EventType, void*, void*); 就做了替换,Register(.....)的参数都不一样了吧?
怎么改正呢?
///////////////////// 以下是C的代码////////////////////////////#include <stdio.h>enum EventType
{
a,
b,
c,
d
};
typedef void Callback (EventType, void*, void*);EventType type;
Callback* callback;
void* data;void Register(EventType t, Callback c,void* d)
{
type = t;
callback = c;
data =d ;
return ;
}
void main(void)
{
}
///////////////////// C的代码 完毕////////////////////////////
{
a,
b,
c,
d
};
typedef void Callback (EventType, void*, void*);
class A
{
public:
A(){};
~A(){}; EventType type;
Callback* callback;
void* data;
void Register(EventType ,void (*Callback)(EventType, void*, void*) ,void * );
};
void A::Register(EventType t,Callback c,void* d)
{
type = t;
callback = c;
data = d;}
void main(void)
{
}OK!
typedef void ( [调用规则] *Callback)(EventType, void*, void*);定义变量的时候直接使用Callback m_callback就不会有上面的问题了。
void Register(EventType ,Callback ,int );而函数实现体是
void A::Register(EventType t,Callback c,void* d)最后一个参数不对
typedef void (*Callback) (EventType, void*, void*);