C++高手帮忙看看,到底是啥错误。

代码:

 template <typename T> 
struct serializer
{
    enum {specialized = 0};
    template <class Archive>
    inline static void serialize(Archive& ar, T& t)
    {
        t.serialize(ar);
    }
};

提示错误:error C2065: “Archive”: 未声明的标识符 该如何修改?

因为你这个Archive类没定义,所以识别不了,你把头文件声明的加上,或者把代码在贴全一点

我这里测试没有任何问题,可以编译,完整代码,编译器是gcc,但是我认为VC++也可以编译。

 #include <iostream>

using namespace std;

template <typename T> 
struct serializer
{
    enum {specialized = 0};
    template <class Archive>
    inline static void serialize(Archive& ar, T& t)
    {
        t.serialize(ar);
    }
};


int main() {
    return 0;
}

1.确认头文件引用是不是正确,如果vs F12进去 看看是不是你要引用的头文件
2.如果 你已经引用了头文件,那么你看看这个类头文件中有没有加命名空间 namespace xxxx,加上xxxx:Archive或using namespace xxxx