【问题标题】:How do I declare an argument for a function of a templated nested class type?如何为模板嵌套类类型的函数声明参数?
【发布时间】:2013-09-25 22:22:22
【问题描述】:

我有一个像这样的容器类:

template<class T>
class MyList
{
    class iterator
    {
        ...
    }

    ...
}

现在我想像这样定义一个find 函数:

template<class T>
typename MyList<T>::iterator find (
    MyList<T>::iterator first, 
    MyList<T>::iterator last, 
    const T& val)
{
    ...
}

这不会编译。如何声明 MyList&lt;T&gt;::iterator 类型的函数参数?

【问题讨论】:

    标签: c++ function templates nested arguments


    【解决方案1】:

    您需要使用typename 限定参数类型,以让编译器知道您指的是一个类型。

    template<class T>
    typename MyList<T>::iterator find (
        typename MyList<T>::iterator first, 
        typename MyList<T>::iterator last, 
        const T& val)
    {
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 2014-03-31
      • 2019-03-23
      • 2019-01-29
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多