c – 模板继承内层访问问题

c – 模板继承内层访问问题,第1张

概述我不能相信 gcc不会接受以下代码…请告诉我,如果从基本模板访问内部类是真的不可能或我是缺少某些东西? template <class T> class BaseClass{public: struct MyStruct { T *data; };};template <class T> class ChildClass : public Base 我不能相信 gcc不会接受以下代码…请告诉我,如果从基本模板访问内部类是真的不可能或我是缺少某些东西?
template <class T> class BaseClass{public:    struct MyStruct    {        T *data;    };};template <class T> class ChildClass : public BaseClass <T>{    public:    voID problem()    {        MyStruct ms1; //error: 'MyStruct' was not declared in this scope        ::MyStruct ms2; //error: '::MyStruct' has not been declared        BaseClass<T>::MyStruct ms3; //error: expected `;' before 'ms3'    }};
解决方法 问题是MyStruct是一个依赖的名称,所以你必须告诉编译器推迟名字查找,直到通过使用基类名称来对模板进行实例化:
typename BaseClass<T>::MyStruct ms1;

有关更多信息,我将阅读Parashift C FAQ条目“Why am I getting errors when my template-derived-class uses a nested type it inherits from its template-base-class?”

总结

以上是内存溢出为你收集整理的c – 模板继承内层访问问题全部内容,希望文章能够帮你解决c – 模板继承内层访问问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1254376.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存