首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个模板特化的有关问题[HELP]

2012-03-26 
一个模板特化的问题[HELP]templatetypenameTFunctionclassDelegate{...........}针对1个参数的成员函数

一个模板特化的问题[HELP]
template   <typename   TFunction   >
class   Delegate  
{
...........
};

针对1个参数的成员函数   对它进行特化    

template   <typename   Treturn,typename   Tclass,typename   TPara1>
class   Delegate <Treturn   Tclass::(Tpara1)   >  
{
............
}

在代码中这样调用(特化的模板类中有相应的构造函数)
Delegate <int   (test::*)(int)>   x(&t,&t::go,1);

通不过啊   模板头文件报错   谁看看这个语法有什么问题   还是cpp不支持这么推导啊?

[解决办法]
这个要用偏特化吗? 不太理解. 也许你要这样?

// test.cpp
// xp + vc-7_1
// cl -EHsc test.cpp

#include <iostream>

template <class R, class T, class P>
class delegate {
public:
delegate(T & t, R (T::*fn)(P), P const & p)
: t_(t),
fn_(fn),
p_(p) { }

R call() {
return (t_.*fn_)(p_);
}
private:
T & t_;
R (T::*fn_)(P);
P p_;
};

// --------

class test {
public:
double foo(int x) {
return static_cast <double> (x);
}
};

int main() {
delegate <double, test, int> d(test(), &test::foo, 100);
std::cout < < d.call() < < std::endl;
return 0;
}

热点排行