[英]Syntax errors in template method that I don't understand
我为学校项目写了一个简短的模板方法,但遇到了我不理解的奇怪语法错误。 它们与我声明的模板有关(注释掉包含模板的标头时,main()中的所有错误都消失了),但我不知道发生了什么。 我包括和“ intersectHeader.h”并使用std名称空间。 在我的main()函数中,我要做的只是声明一个向量:
向量v1; -错误:C2065'字符串'未声明的标识符,C2065'v1'未声明的标识符,C2065'vector'未声明的标识符
这是模板:
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,常量矢量和v2)”中
您不应在任何头文件中using namespace std
。 您应该在模板实现中添加显式的std::
名称空间,并且问题应该消失(假设您已经包含了适当的标准库头)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.