今天真的感到C++落后了!
本来想在Native C++中建立一个类似于C#的委托机制类如下:
class NonTypeDelegate
{
public:
typedef void(*pfunc)(CObject* sender, EventArgs& e);
public:
NonTypeDelegate(pfunc pf):pf(pf){};
~NonTypeDelegate(){};
protected:
pfunc pf;
public:
void operator()(CObject* sender, EventArgs& e){
pf(sender, e);};
};
当这个类用于全局函数时没有问题,于是想将用于类中的函数。类如下:
template<typename T>
class TypeDelegate
{
public:
typedef void (T::*pfunc)(CObject* sender , EventArgs& e);
pfunc pf;
public:
TypeDelegate(pfunc pf) : pf(pf){}
void operator ()(CObject* sender, EventArgs& e){ pf(sender, e);}
};
其中EventArgs时自己定义的事件参数类,无关大局的。上面这个类编译没有问题,但是真的用就有问题了,如:
TypeDelegate<MyClass> dg(MyClass::function);
这时将出现各种离奇编译或者连接错误,翻遍各种资料原来时C++的局限性,
不能传递类模板的参数!!!!!!!
今天真的感到C++像古董了!这也是为什么Java,C#能崛起的原因!