编译时:
#include <vector>
template<class T> class foo {
void bar() {
std::vector<T> x;
std::vector<T>::iterator i = x.begin();
}
};
int main() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
# g++ ~test.cpp
test.cpp: In member function `void foo<T>::bar()':
test.cpp:7: error: expected `;' before "i"
Run Code Online (Sandbox Code Playgroud)
这不应该工作吗?
RHEL上的g ++版本3.4.3.
你可以,但你需要告诉它iterator有一个类型(它不知道的,因为通常它可以依靠T-作为vector一个模板类型,并可能在理论上有专长的一些T地方iterator是一个函数或别的东西).所以,你必须用typename它来表明它总是一个类型:
typename std::vector<T>::iterator i = x.begin();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
188 次 |
| 最近记录: |