声明函数模板的语法

Zub*_*tta 2 c++ containers templates

我正在尝试创建一个模板函数,它接受任何类型的T参数(现在是原语)并打印出其内容:

template<class T>
void displayContents(const vector<T>& data)
{
    vector<T>::const_iterator i;
    i=data.begin();

    for( ; i!=data.end(); i++){
        cout<<*i<endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

错误消息是:

在函数'void displayContents(const std :: vector>&)'中:error:expected';' 在'我'之前 错误:'i'未在此范围内声明===构建完成:2个错误,0个警告===

我忽略了语法错误吗?

Kri*_*izz 5

请尝试以下方法:

  typename vector<T>::const_iterator i;
Run Code Online (Sandbox Code Playgroud)

正如Björn在评论中已经指出的那样,它是必需的,因为它是模板的从属名称.

  • 问题是`const_iterator`是*依赖名称* - 您可以在这里阅读更多相关信息:http://stackoverflow.com/questions/610245. (7认同)