【发布时间】:2010-06-17 01:07:59
【问题描述】:
请看下面的示例代码:
class A
{
private:
class B
{
public:
foobar();
};
public:
foo();
bar();
};
在 A 类和 B 类实现中:
A::foo()
{
//do something
}
A::bar()
{
//some code
foo();
//more code
}
A::B::foobar()
{
//some code
foo(); //<<compiler doesn't like this
}
编译器在方法 foobar() 中标记对 foo() 的调用。早些时候,我将 foo() 作为类 A 的私有成员函数,但假设 B 的函数看不到它,则更改为 public。当然,它没有帮助。我正在尝试重用 A 的方法提供的功能。为什么编译器不允许这个函数调用?正如我所看到的,它们是同一个封闭类(A)的一部分。我认为在 C++ 标准中封闭类的嵌套类成员的可访问性问题已经解决。
如何在不为 B 重写相同的方法 (foo()) 的情况下实现我想要做的事情,从而使 B 嵌套在 A 中?
我正在使用 VC++ 编译器版本 9 (Visual Studio 2008)。感谢您的帮助。
【问题讨论】:
标签: c++ nested-class