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

C++ 如何在不将内部类的定义放入父类的情况下创建内部类?,c++,inner-classes,C++,Inner Classes,我要写一个头文件,它很长。因为它太复杂了,我不想把内部类定义放在根类中。我的意思是,如果不在根类中写一个类,我怎么能使它成为内部类呢 class outer { } class inner { } 如果我可以这样使用,我想头文件会更清晰。您可以将“outer”指定为“public class outer”,并将其定义和“inner”定义都放在“class.java”文件中,outer中的代码可以实例化inner,就像inner在不同的源文件中一样。不清楚您想要的是什么,因为您没有解释为什

我要写一个头文件,它很长。因为它太复杂了,我不想把内部类定义放在根类中。我的意思是,如果不在根类中写一个类,我怎么能使它成为内部类呢

class outer
{

}

class inner
{

}

如果我可以这样使用,我想头文件会更清晰。

您可以将“outer”指定为“public class outer”,并将其定义和“inner”定义都放在“class.java”文件中,outer中的代码可以实例化inner,就像inner在不同的源文件中一样。不清楚您想要的是什么,因为您没有解释为什么需要“内部”类。

如下:

// foo.hpp

class Foo
{
public:
  class Inner;
  Foo();
  void bar();
  Inner zoo();
};

然后,在实施过程中:

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

void Foo::bar() { /* ... */ }
void Foo::Inner::func() { /* ... */ }

请注意,您可以在
Foo
(即在
Foo.hpp
)的类定义中使用不完整类型
Foo::internal
),但必须遵守不完整类型的常规限制,例如,
internal
可能显示为函数返回类型、函数参数、引用或指针。只要类
Foo
的成员函数实现可以看到
Foo::Inner
(通过包含
Foo_Inner.hpp
)的类定义,一切都很好。

OP删除了模糊的Java标记,这个问题不是关于C++的。一个注释:如果 fo> <代码>的用户需要与<代码> FooInner < /代码>交互,那么它们显然也需要内部类定义。
#include "foo.hpp"
#include "foo_inner.hpp"

void Foo::bar() { /* ... */ }
void Foo::Inner::func() { /* ... */ }