c++ - 模板类前向声明

标签 c++ templates forward-declaration

<分区>

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

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 ... ) { }
...

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

最佳答案

尝试使用两个模板参数:

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

}

关于c++ - 模板类前向声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16461061/

相关文章:

c++ - 生成核心转储以及文本转储 linux

c++ - 具有 lambda 的多态访问者

c++ - 我找不到错误

c++ - 用户定义的默认构造函数是否效率较低?

templates - SingleThreaderDialog.Exception.NoValidMappingDetailsFound

c++ - 前向声明类时成员函数的行为

c++ - 使用虚函数转发声明模板类的实例

c++ - .h 文件中的转发声明以使用友好类

c++ - 动态转换返回 null

c++ - 以下代码之间有什么区别,为什么一个有效而另一个无效?