在写类模板的时候,我按照我们写类的习惯,先在.h文件里定义了函数,然后在.cpp文件里写函数实现,结果它会报错,VS2017报错如下:
当然,VS报错报的是让人很懵逼的。它定位给我定到了
struct bags
{
T data;
struct bags *next;
};
但是可以肯定这一块是没有问题的
于是我打开DEV-C,它报错就正常多了
63 [Error] specializing member ‘bag::bag’ requires ‘template<>’ syntax
这样,我们就找到问题了。原来你在类外写函数实现的时候,你需要重新声明模板类。虽然听起来很扯,但是确实需要这样😂
所以为了方便,可以在类中直接写完函数实现,不用再写到类外了。