我会写一个头文件,而且它很长.因为它太复杂了,我不想把内部类定义放在根类中.我的意思是如何在不在根类中编写类内部的情况下创建类.
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)的类定义,一切都很好.