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 – 模板继承内层访问问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)