读书人

模板类中嵌套类之间的关系,该怎么处理

发布时间: 2012-03-24 14:00:46 作者: rapoo

模板类中嵌套类之间的关系

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是没问题的。类似的问题还有一个模板成员函数的特化问题。

读书人网 >C++

热点推荐