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++的。一个注释:如果#include "foo.hpp"
#include "foo_inner.hpp"
void Foo::bar() { /* ... */ }
void Foo::Inner::func() { /* ... */ }