为了账号安全,请及时绑定邮箱和手机立即绑定

将'typedef'从基于'模板'的派生类传播

将'typedef'从基于'模板'的派生类传播

C++
呼唤远方 2019-08-19 14:07:16
将'typedef'从基于'模板'的派生类传播我正在尝试定义基类,它只包含typedef。template<typename T>class A{public:     typedef std::vector<T> Vec_t;};template<typename T>class B : public A<T>{private:     Vec_t v;  // fails - Vec_t is not recognized};BI中为什么会收到Vec_t无法识别的错误,我需要明确写出来?typename A<T>::Vec_t v;
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

我相信这个问题是重复的,但我现在找不到它。C ++标准说你应该根据14.6.2 / 3完全限定名称:

在类模板的定义或类模板的成员中,如果类模板的基类依赖于模板参数,则在的定义时,在非限定名称查找期间不会检查基类作用域。模板或成员或在类模板或成员的实例化期间。


查看完整回答
反对 回复 2019-08-19
?
慕森卡

TA贡献1806条经验 获得超8个赞

因为编译器不确定Vec_t命名类型。例如,A<T>可能是专门用于T=int具有特定的typedef

查看完整回答
反对 回复 2019-08-19
  • 3 回答
  • 0 关注
  • 446 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信