模板类向前声明

模板类向前声明

问题描述:

我向前声明模板外部和内部类如下模板类向前声明

template<class T> 
class outer; 

class inner; 

刚过上述声明我已经定义为

namespace boost 
{ 
    namespace serialization 
    { 
     template<class Archive> 
     void serialize(Archive &ar, outer &var, ...) { } 
    } 

} 

外一个boost::serialization声明是一个模板类因此需要指定模板参数。如果我试图这样做,如下所示

... 
    void serialize(... outer<T> &var ...) { } 
... 

这是一个错误,因为只允许一个模板声明。定义这种前瞻性声明的正确方法是什么?

+0

如果我不是错了,你应该做的:模板模板 void serialize(Archive&ar,外部&var,...){}。我不记得,但我想你也可以把模板放在一行:template Infested 2013-05-09 11:52:07

+2

为什么你不能使用template ? – tmaric 2013-05-09 11:52:16

+0

@ tomislav-maric我以为我需要分开模板声明;我认为他们是独一无二的,不应该混合。我会做你的建议。提出一个答案,我会投票和标记。 – Mushy 2013-05-09 14:52:15

使用两个模板参数尝试:

namespace boost 
{ 
    namespace serialization 
    { 
     template<class Archive, class T> 
     void serialize(Archive &ar, outer<T>& var, ...) { } 
    } 

} 

我可能误会了,但是你能不能做到这一点:

template <class Archive, typename T> 
void serialize(Archive archive, out<T> &var, ...);