【发布时间】:2013-05-09 11:47:24
【问题描述】:
我正在向前声明一个模板外部和内部类,如下所示
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 ... ) { }
...
这是一个错误,因为只允许一个模板声明。定义这种前向声明的正确方法是什么?
【问题讨论】:
-
如果我没有错,你应该这样做:模板
template void serialize(Archive &ar, outer &var, ...) { }。我不记得了,但我认为您也可以将模板放在一行中: template -
为什么不能使用模板
? -
@tomislav-maric 我想我需要分离模板声明;我认为它们是独一无二的,不应该混为一谈。我会按照你的建议去做。提出答案,我会投票并标记。
-
@Mushy 谢谢你的等待,我回答了.. :)
标签: c++ templates forward-declaration