在为嵌入类定义方法时,有没有办法避免重复包含类?

时间:2012-05-24 21:00:02

标签: c++ namespaces nested-class

在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() { ... }

1 个答案:

答案 0 :(得分:3)

我没有特别尝试过这个(没有编译器),但我猜想如果你正在使用内部类,比如:: iterator,你可能会这样做:

using outerclass::innerclass;

然后执行:

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

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

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

我会说这一切都会让你的代码不那么易读,不管你是怎么解决它的,这都是个坏主意。