如何在不将内部类的定义放入父类的情况下创建内部类?

Vip*_*ime 5 c++ inner-classes

我会写一个头文件,而且它很长.因为它太复杂了,我不想把内部类定义放在根类中.我的意思是如何在不在根类中编写类内部的情况下创建类.

class outer
{

}

class inner
{

}
Run Code Online (Sandbox Code Playgroud)

如果我可以这样使用,我认为头文件会更清晰.

Ker*_* SB 16

像这样:

// foo.hpp

class Foo
{
public:
  class Inner;
  Foo();
  void bar();
  Inner zoo();
};
Run Code Online (Sandbox Code Playgroud)

// foo_inner.hpp

#include "foo.hpp"

class Foo::Inner
{
  void func();
};
Run Code Online (Sandbox Code Playgroud)

然后,在实施中:

#include "foo.hpp"
#include "foo_inner.hpp"

void Foo::bar() { /* ... */ }
void Foo::Inner::func() { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

请注意,您可以使用不完全类型Foo::Inner的类定义Foo(即foo.hpp)除不完全类型的一般限制,例如,Inner可能会出现在函数返回类型,函数参数,引用或指针.只要该类的成员函数实现Foo可以看到Foo::Inner(通过包含foo_inner.hpp)的类定义,一切都很好.