【发布时间】:2011-12-10 06:19:59
【问题描述】:
我一直在寻找类似的东西,但找不到(或者我发现的东西没有帮助)。我试图能够在模板类的向量上使用迭代器,返回它并在类外使用它,如下面的代码所示。
#include <iostream>
#include <vector>
using namespace std;
namespace ns {
template <class T>
class test {
private:
vector<T> container;
public:
typedef vector<T>::iterator iterator;
vector<T>::iterator begin() {
return container.begin();
}
vector<T>::iterator end() {
return container.end();
}
}
};
int main(void) {
test<int> inters;
for (ns::test<int>::iterator i = inters.begin(); i != inters.end(); i++) {
// bla bla bla
}
cout << "end" << endl;
return 0;
}
(您也可以在此处查看代码: http://codepad.org/RuXCYF6T)
我在第 15 行收到以下错误:
error: type '__gnu_debug_def::vector<_Tp, std::allocator<_CharT> >' is not derived from type 'ns::test<T>'
compilation terminated due to -Wfatal-errors.
提前致谢。
【问题讨论】:
-
不应该是
ns::test<int> inters;吗?如果可以帮助,请不要使用using namespace std;。 -
还有,';' 在哪里在你的班级声明之后?这是给你那个错误的实际代码,还是就像给出错误的代码?请复制粘贴(不要重新输入)一个实际的、最小的、完整的程序来演示错误。
-
我收回我的隐含指控。这是实际代码(由键盘链接证明)。键盘仅显示第一个错误。 @user 会在适当的时候发现其他错误。
标签: c++ templates vector iterator typedef