我写了一个学校项目的简短模板方法,并得到我不明白的奇怪的语法错误。他们与我声明的模板有关(在注释包含模板的头文件时,main()中的所有错误消失),但我无法弄清楚发生了什么。我包含和“intersectHeader.h”并使用std命名空间。 在我的main()函数中,我所做的全部是声明一个向量:模板方法中的语法错误,我不明白
vector v1; - 错误:C2065 '串' 未声明的标识符, C2065 'V1' 未声明的标识符,C2065 '向量' 未声明的标识符
这是模板:
template<typename T>
vector<T> intersect(const vector<T> & v1, const vector<T> & v2)
{
vector<T> resultVector;
bool duplicate = false;
for (int i = 0; i < v1.size(); i++)
{
duplicate = false;
for (int j = 0; j < v2.size(); j++)
{
if (v1[i] == v2[j])
{
for (int a = 0; a < resultVector.size(); a++)
{
if (v1[i] == resultVector[a])
{
duplicate = true;
break;
}
}
if (!duplicate)
{
resultVector.push_back(v1[i]);
}
}
}
}
return resultVector;
}
上面给了我这些错误:
C2988无法识别的模板声明/定义,C2143语法 错误缺少';'在'<'之前,C2059语法错误'<'。所有这一切都发生在第二行
“矢量相交(常量向量& V1, const的载体& V2)”
我不知道为什么在<>未示出的代码,但所述声明是:模板 矢量相交(常量矢量&V1,常量矢量&V2)和可变矢量 resultVector; –
Rick
请将完整的错误输出复制粘贴到问题的正文中,使用代码格式,以便显示所有字符。还请指出(例如评论)代码中错误的位置。如果可能的话,请尝试创建一个[最小化,完整和可验证示例](http://stackoverflow.com/help/mcve),您可以向我们显示。 –
至少显示所有包含和“使用命名空间”的东西。或者更好的是,删除所有的使用指令,并用相应的限定符为相关名称加前缀。 – Mat