0

我正在向前声明一个模板外部和内部类,如下所示

template<class T>
class outer;

class inner;

就在上述声明之后,我有一个boost::serialization声明定义为

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

}

Outer 是一个模板类,因此需要指定模板参数。如果我尝试这样做如下

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

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

4

2 回答 2

2

尝试使用两个模板参数:

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

}
于 2013-05-09T19:19:27.470 回答
1

我可能误解了,但你能不能这样做:

template <class Archive, typename T>
void serialize( Archive archive, out<T> &var, ... );
于 2013-05-09T16:24:19.647 回答