模板类中嵌套类之间的关系
- C/C++ code
#include<iostream>template<class T>class base{ public: class people { public: protected: std::string name; int age; }; class student:public people { public: std::string GetName() { return name; } }; private: T mt[10];};int main(){ return 0;}编译出错:I:\learn C++\Learn C++\main.cpp|19|error: 'name' was not declared in this scope|
何解?
查了相关资料,我认为与模板编译时的处理有关,因为没有生成相应代码,导致student和people类之间的关系不知道,所以才出现这种错误。
[解决办法]
return people::name;
[解决办法]
原因的话,你也知道了。
[解决办法]
这点微软的编译器做得比较好。vs2008是没问题的。类似的问题还有一个模板成员函数的特化问题。