如果我有这样的嵌套类:

  class MyClass
  {
    class NestedClass
    {
    public:
      // nested class members AND definitions here
    };

    // main class members here
  };

当前,MyClass的定义在CPP文件中,但NestedClass的定义在头文件中,也就是说,我无法在CPP文件中声明函数/构造函数。

所以我的问题是,如何在cpp文件中定义NestedClass的功能?如果不能,原因是什么(如果是这种情况,我对为什么会这样有一个模糊的想法,但我想提供一个很好的解释)?那结构呢?

最佳答案

您可以。如果您的内部类具有如下方法:

  class MyClass   {
    class NestedClass
    {
    public:
      void someMethod();
    };

    // main class members here
  };

...然后您可以在.cpp文件中定义它,如下所示:
void MyClass::NestedClass::someMethod() {
   // blah
}

结构与C++中的类几乎是同一件事-只是默认使用“public”进行访问。它们在所有其他方面都像类一样受到对待。

您可以(如注释中所述)仅声明一个内部类,例如:
class MyClass   {
    class NestedClass;
    // blah
};

..,然后在实现文件中定义它:
class MyClass::NestedClass {
  // etc.
};

10-08 02:29