C++ 模板类转发声明
我正向声明一个模板外部和内部类,如下所示C++ 模板类转发声明,c++,templates,forward-declaration,C++,Templates,Forward Declaration,我正向声明一个模板外部和内部类,如下所示 template<class T> class outer; class inner; ... void serialize(... outer<T> &var ... ) { } ... Outer是一个模板类,因此需要指定模板参数。如果我试图这样做如下 template<class T> class outer; class inner; ... void serialize(
template<class T>
class outer;
class inner;
...
void serialize(... outer<T> &var ... ) { }
...
Outer是一个模板类,因此需要指定模板参数。如果我试图这样做如下
template<class T>
class outer;
class inner;
...
void serialize(... outer<T> &var ... ) { }
...
。。。
void序列化(…外部&var…{}
...
这是一个错误,因为只允许一个模板声明。定义此类转发声明的正确方式是什么?我可能误解了,但您不能这样做:
template <class Archive, typename T>
void serialize( Archive archive, out<T> &var, ... );
模板
无效序列化(归档、输出和变量等);
我可能误解了,但你不能这样做:
template <class Archive, typename T>
void serialize( Archive archive, out<T> &var, ... );
模板
无效序列化(归档、输出和变量等);
尝试使用两个模板参数:
namespace boost
{
namespace serialization
{
template<class Archive, class T>
void serialize(Archive &ar, outer<T>& var, ...) { }
}
}
namespace boost
{
命名空间序列化
{
模板
无效序列化(存档和ar、外部和变量,…{}
}
}
尝试使用两个模板参数:
namespace boost
{
namespace serialization
{
template<class Archive, class T>
void serialize(Archive &ar, outer<T>& var, ...) { }
}
}
namespace boost
{
命名空间序列化
{
模板
无效序列化(存档和ar、外部和变量,…{}
}
}
如果im没有错,您应该执行以下操作:模板void serialize(Archive&ar,outer&var,…){}。我不记得了,但我想你也可以把模板放在一行:template为什么你不能使用template?@tomislav maric我想我需要分离模板声明;我认为它们是独一无二的,不应该混为一谈。我会照你的建议去做。提出一个答案,我将投票并打分。@Mushy感谢您的等待,我回答:)如果im没有错,您应该执行以下操作:模板void serialize(Archive&ar,outer&var,…{}。我不记得了,但我想你也可以把模板放在一行:template为什么你不能使用template?@tomislav maric我想我需要分离模板声明;我认为它们是独一无二的,不应该混为一谈。我会照你的建议去做。提出一个答案,我将投票并打分。@Mushy感谢您的等待,我回答:)