请参阅下面的示例代码:
class A
{
private:
class B
{
public:
foobar();
};
public:
foo();
bar();
};
Run Code Online (Sandbox Code Playgroud)
在A&B级实施中:
A::foo()
{
//do something
}
A::bar()
{
//some code
foo();
//more code
}
A::B::foobar()
{
//some code
foo(); //<<compiler doesn't like this
}
Run Code Online (Sandbox Code Playgroud)
编译器在方法foobar()中标记对foo()的调用.早些时候,我把foo()作为A类的私有成员函数,但是改为public,假设B的函数看不到它.当然,它没有帮助.我试图重新使用A的方法提供的功能.为什么编译器不允许这个函数调用?在我看来,它们是同一个封闭类(A)的一部分.我认为嵌套类meebers在C++标准中封闭类的可访问性问题已得到解决.
如果不重写B的相同方法(foo()),保持B嵌套在A中,我怎样才能实现我想做的事情?
我使用的是VC++编译器ver-9(Visual Studio 2008).谢谢您的帮助.