找不到适合此问题的名称。

我有一个模板类Array,其中包含嵌套的迭代器类

class Array<T>::Iterator


我想定义一个函数“排序”:

template <typename T, class RAIterator>
void sort(RAIterator start, RAIterator end);


问题是,g ++无法从函数的签名中推断出T。由于我希望函数独立于指定T(例如sort (...)),因此我在考虑以下(显然是错误的)语法:

template <typename T, class RAIterator<typename T>>
void sort(RAIterator start, RAIterator end);


有没有一种方法可以让编译器实际计算出T?

最佳答案

您应该在迭代器类中创建一个T的typedef,然后可以在您的sort函数中访问它:

template <typename T>
class Array{
    class Iterator{
        typedef T value;
    }
}

template <class RAIterator>
void sort(RAIterator start, RAIterator end){

    typename RAIterator::value &v=...;
}

关于c++ - 嵌套类模板问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17022074/

10-11 19:40