假设有一个小班级
template<class T1>
class c {
template<class T>
class Test {
public:
typedef std::vector<T> vetor_type;
vetor_type some_var;
};
void f() {
Test<int>::vetor_type tt; //error
}
};
我收到错误:
预期';'表达后。
编辑:我不知道为什么关于typename的答案被删除了,因为它实际上有帮助。 但有人可以解释为什么我要在另一个类模板中编写此代码时必须使用typename吗?
答案 0 :(得分:5)
Test<T>
取决于用于实例化c<T1>
的类型,因此您需要在typename
中的定义中使用foo()
。
void f() {
typename Test<int>::vetor_type tt;
}
答案 1 :(得分:0)
..因为代码对我来说很好。
可能拼写错误:可能 vetor_type 在一个地方, vector_type 在其他地方?