暴露泛型矢量的迭代器

时间:2014-05-27 13:50:58

标签: c++ generics stdvector

我有一个带有私有通用vector的简单模板类,我想公开beginend迭代器(为了在std:accumulate中使用这些类之外的那些)

我试图像这样实现它:

#include <vector>

template <typename T>
class MyClass 
{
public:
    std::vector<T, std::allocator<T>>::iterator begin() { return m_data.begin(); }
    std::vector<T, std::allocator<T>>::iterator end() { return m_data.end(); }
    //...

private:
    std::vector<T> m_data;
    //...
};

但似乎我做错了,因为它没有编译和报告:

C2146: syntax error : missing ';' before identifier 'begin' 
C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C2146: syntax error : missing ';' before identifier 'begin' 
C4430: missing type specifier - int assumed. Note: C++ does not support default-int

这对我来说完全没有意义,你能否指出begin如何被曝光?

0 个答案:

没有答案