2011-04-27 71 views
1

我是新来的模板编程。我有这样的问题模板编程

A.process(B) 

其中A是一个模板参数。

我还可以将B设置为模板参数吗?通过这种方式,我可以让不同类型的A对象处理不同类型的对象B. B通常不会在运行时多态使用。

谢谢。

+3

这个问题很可能被关闭,因为它是非常模糊......请尽量会更加精确;也许包括一些代码,在这些代码中,您试图按照自己的意愿去做,并解释哪些方面可以正常工作或无法正常工作,或者解决了编译器错误。你也可以尝试提供一个最小程序的其余部分来使用这个功能:'A.process(B)'不会传达太多,因为有些语句是矛盾的(例如罚款......将B设置为模板参数? ,这意味着B是一个积分常数,但稍后你会谈到“类型的对象B”,表明B是一种类型)。 – 2011-04-27 08:48:28

回答

3

如果我理解你的需求,然后是 - 你可以这样做:

template <typename A, typename B> 
void fn(A& a, B& b) 
{ 
    ...other code... 
    a.process(b); 
    ...other code... 
} 
+2

我不确定这是否是要求。国际海事组织,他/她想要一个成员函数模板'template A :: process(B b)',但这也可以通过'A'进行参数化。 – 2011-04-27 08:50:25

+0

@Oli:“也可以通过A参数化” - 这是双重调度吗?如果没有,我敢肯定我不会是那个给出答案的人:-)。 – 2011-04-27 09:10:09

+0

这是我的理解,是的! – 2011-04-27 09:59:51