Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 模板类转发声明_C++_Templates_Forward Declaration - Fatal编程技术网

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感谢您的等待,我回答:)