读书人

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

发布时间: 2013-09-07 14:12:44 作者: rapoo

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


#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++

热点推荐