我在网上搜索并没有找到任何解释为什么会发生以下情况。
例如,有一个模板类 Enclosure 与一个嵌套类 Nested。
在封闭类中,有一个方法应该创建嵌套类的实例并使用它的字段和方法。
在下面的代码中,有一个我正在尝试的模型:
template<typename T, typename S>
class Enclosing{
public:
class Nested;
Nested foo();
};
template<typename T, typename S>
class Enclosing<T,S>::Nested{
public:
T field;
void some_method();
friend class Enclosing; // instead of this line I also tried:
// friend class Enclosing<T,S>
// and it didn't work either
};
template<typename T, typename S>
typename Enclosing<T,S>::Nested Enclosing<T,S>::foo (){
Nested nes;
nes.some_method; // the problem appears here
return enc;
}
问题是:
当我写作nes.some_method
时,在我输入“nes.”之后,我尝试过的所有环境(VS2010,eclipse)都没有给我任何选择。我似乎“nes”根本不是班级的一个实例。
如何从封闭模板类访问嵌套类的方法和字段?