好的,我有下面的代码,当我执行它时,出现以下错误:
type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::vector’
vector<s> 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;
};
有人可以解释一下这个问题吗?
问题是编译器不知道是否s
是一个类型或一个值。这是您添加的情况typename
or template
,但是当我测试时,这些都不起作用。直接在中使用完整类型vector
确实有效然而:
template <class T>
class B: public A<T> {
public:
using A<T>::s;
std::vector<typename A<T>::s> v;
};
(编辑)继续玩它因为为什么不呢,当然typename
在我没有尝试过的一个地方需要:using
线。下面的代码也有效.
template <class T>
class B: public A<T> {
public:
using typename A<T>::s;
std::vector<s> v;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)