问题如下:以下测试引发大量编译器错误。
#include <vector>
using namespace std;
template<class T>
class test{
vector<T> vec;
public:
vector<T>::iterator begin();
};
template<class T>
vector<T>::iterator test<T>::begin(){
return vec.begin();
}
int main(){
test<float> testing;
testing.begin();
}
一些编译器错误:
test.cpp(8): warning C4346: 'std::vector<T>::iterator' : dependent name is not a type
test.cpp(8): error C2146: syntax error : missing ';' before identifier 'begin'
test.cpp(13): error C2143: syntax error : missing ';' before 'test<T>::begin'
但是,如果您将模板换成vector<T>
say,vector<float>
它的编译就很好了。例如:
template<class T>
class test{
vector<T> vec;
public:
vector<float>::iterator begin();
};
template<class T>
vector<float>::iterator test<T>::begin(){
return vec.begin();
}
关于为什么的任何想法?