繁体   English   中英

我不理解的模板方法中的语法错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM