好的,所以我在下面有这个代码,当我执行它时,我收到以下错误:
模板参数列表中参数1的类型/值不匹配'模板类std :: vector' 矢量v;
template <class T>
class A {
public:
struct s{T x;};
};
template <class T>
class B: public A<T> {
public:
using A<T>::s;
vector<s> v;
};
有人可以解释一下这个问题。
答案 0 :(得分:3)
问题是编译器不知道s
是什么类型。这是您添加typename
或template
的情况,但在我测试时这些都没有。然而,直接在vector
does work中使用完整类型:
template <class T>
class B: public A<T> {
public:
using A<T>::s;
std::vector<typename A<T>::s> v;
};
(编辑)保持玩它,因为为什么不,当然{I}需要在我没有尝试过的地方typename
行。using
行。以下代码also works。
template <class T>
class B: public A<T> {
public:
using typename A<T>::s;
std::vector<s> v;
};