2

在 C++ 中,我可以在声明成员函数的另一个类中定义一个类。后来,当我为这些声明定义定义时,有没有办法不重复包含类。例如,我的标题可能如下所示:

class Outer {
  class Inner {
    void one();
    void two();
    void three();
  };
};

稍后,我的定义可能如下所示:

void Outer::Inner::one() { ... }
void Outer::Inner::two() { ... }
void Outer::Inner::three() { ... }

是否有某种方式可以省略 Outer 而无需在声明点进行定义,可能是通过使用命名空间成为:

void Inner::one() { ... }
void Inner::two() { ... }
void Inner::three() { ... }
4

1 回答 1

3

我没有专门尝试过这个(这里没有编译器),但我会冒险猜测如果你正在使用内部类,比如 ::iterator,你可能会这样做:

using outerclass::innerclass;

然后做:

innerclass::foo() { /* def */ }

假设在外部类的范围内没有与您的内部类同名的全局变量。

此外,您绝对可以使用宏,并且可能使用 typedef(不确定,但值得一试)。

我想说所有这一切都会使您的代码可读性降低,尽管无论您如何解决它,这都是一个坏主意。

于 2012-05-24T21:11:30.910 回答