c – 在类的begin()方法上编译错误
发布时间:2020-12-16 10:00:35 所属栏目:百科 来源:网络整理
导读:试图创建一个类来跟踪最近2秒内的数据包,但是编译错误.有任何想法吗?谢谢. g++ -std=c++11 map2.cc map2.cc:20:2: error: invalid use of template-name ‘std::iterator’ without an argument list iterator begin() { return l.begin(); } 这是小班: #i
试图创建一个类来跟踪最近2秒内的数据包,但是编译错误.有任何想法吗?谢谢.
g++ -std=c++11 map2.cc map2.cc:20:2: error: invalid use of template-name ‘std::iterator’ without an argument list iterator begin() { return l.begin(); } 这是小班: #include <iostream> #include <string> #include <list> #include <unordered_map> using namespace std; class cEvents { public: list<pair<double,int>> l; int add(double ts,int pktNum,double maxTime) { l.push_back(make_pair(ts,pktNum)); pair<double,int> tmp; while (1) { tmp = l.front(); if ((ts - tmp.first) < maxTime) break; l.pop_front(); } return l.size(); } iterator begin() { return l.begin(); } }; int main () { cEvents e; cout << e.add(0,1,2) << endl; cout << e.add(0.1,2,2) << endl; cout << e.add(0.2,3,2) << endl; cout << e.add(0.5,4,2) << endl; cout << e.add(1.2,5,2) << endl; cout << e.add(1.7,6,2) << endl; for (auto x : e) { //cout << x.first << " " << x.second << endl; } cout << e.add(2.2,7,2) << endl; cout << e.add(3.2,8,2) << endl; return 0; } 解决方法
将返回类型与您要返回的内容相匹配.
试试这个:list< pair< double,int>> :: iterator begin(){return l.begin(); } 更新:编译器告诉我你必须创建end()函数作为类cEvents的成员.它应该是这样的: list<pair<double,int>>::iterator end() { return l.end(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |