模板参数中参数1处的C ++类型/值不匹配

时间:2018-03-17 02:16:16

标签: c++

好的,所以我在下面有这个代码,当我执行它时,我收到以下错误:

  模板参数列表中参数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;
};

有人可以解释一下这个问题。

1 个答案:

答案 0 :(得分:3)

问题是编译器不知道s是什么类型。这是您添加typenametemplate的情况,但在我测试时这些都没有。然而,直接在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;
};